11 Veri duzenleme - III
- Bu bölümde pratiklik ve anlaşılabilirlik açısında midiPISA verisini kullanacağız. Verinin oluşturulması aşağıdaki kodla sağlanabilir.
library(tuev)
data(PISA_OGR_2018)
midiPISA <- PISA_OGR_2018 %>%
select(OGRENCIID,SINIF,CINSIYET,
Anne_Egitim,Baba_Egitim,OKUMA_ZEVK,
ST097Q01TA:ST097Q05TA,ODOKUMA1:ODOKUMA5)
midiPISA veri seti; öğrenci id (OGRENCIID), sınıf düzeyi (SINIF), cinsiyet (CINSIYET), anne eğitim düzeyi (Anne_Egitim), baba eğitim düzeyi (Baba_Egitim), okumaktan zevk alma (OKUMA_ZEVK), ST097Q01TA, ST097Q02TA, ST097Q03TA, ST097Q04TA, ST097Q05TA, okuma puanı olası değer 1 (ODOKUMA1), okuma puanı olası değer 2 (ODOKUMA2), okuma puanı olası değer 3 (ODOKUMA3), okuma puanı olası değer 4 (ODOKUMA4), okuma puanı olası değer 5 (ODOKUMA5) değişkenleri olmak üzere toplam 16 değişkenden oluşmaktadır.
PISA verileri OECD web adresinden SPSS formatında çekildiği için değişken etiketleri(label) ile birlikte gelmektedir. Bu etiket isimleri bazen R paketlerindeki fonksiyonlar ile birlikte çalışmamaktadır. Bu nedenle "
expss::drop_var_labs
" bu etiketlerin kaldırılmasını sağlar ve midiPISA veri seti üzerine kaydedilir.
midiPISA <- expss::drop_var_labs(midiPISA)
- Bir diğer alternatif ise değişken etiketlerini faktör düzeyi olarak kaydetmektir. Bu işlem aşağıdaki kodlarla sağlanabilir.
library(sjlabelled)
midiPISA <- midiPISA %>% mutate_if(is_labelled, as_factor)
# Faktor degiskenlere duzey atama amacıyla yazılan fonksiyon
levelsnames <- function(x){
levels(x) <- names(attr(x,"labels"))
x
}
# Yazılan fonkisyonun faktor degiskenlere uygulanması
midiPISA <-mutate_if(midiPISA,is.factor, levelsnames)
Seçme ve dönüştürme amacıyla aşağıdaki fonksiyonlar kullanılabilir.
select() fonksiyonu
select() fonksiyonu içinde çalışan fonksiyonlar
rename() fonksiyonu
mutate() ve transmute() fonksiyonları
11.1 select() fonksiyonu
select() fonksiyonu ile sütun bazında seçim yapılabilir.
Veri yapısının incelenmesi.
## [1] 6890 16
- 16 sütunla çalışmayacaksanız, problem durumunuza uygun sütunları seçebilirsiniz. Fonksiyon içinde degişkenler tek tek virgül
,
ile ayrılarak seçim yapılabilir.
select(veri seti, degisken adi, degisken adi,..)
veri seti %>% select(degisken adi, degisken adi,..)
- OGR_ID, CNSYT ,AED, BED değişkenlerinin seçimi
OGRENCIID | ST097Q01TA | ST097Q04TA | OKUMA_ZEVK |
---|---|---|---|
79200768 | 1 | 1 | -0.2891 |
79201064 | 3 | 3 | 0.6040 |
79201118 | 2 | 3 | 0.6380 |
79201275 | 2 | 1 | -1.1538 |
79201481 | 3 | 3 | 0.6669 |
- Aynı işlem
c()
fonksiyonu içinde de yapılabilir.
- select() fonksiyonu ile sütun bazında seçim yapılabilir.
OGRENCIID | ST097Q01TA | ST097Q04TA | OKUMA_ZEVK |
---|---|---|---|
79200768 | 1 | 1 | -0.2891 |
79201064 | 3 | 3 | 0.6040 |
79201118 | 2 | 3 | 0.6380 |
79201275 | 2 | 1 | -1.1538 |
79201481 | 3 | 3 | 0.6669 |
79201556 | 3 | 2 | 0.3568 |
select() fonksiyonu belirli bir aralıktaki değişkenler iki nokta
:
opertorü ile seçilebilir.örneğin okumadan alınan zevke ilişkin maddeler aşağıdaki şekilde seçilebilir.
ST097Q01TA | ST097Q02TA | ST097Q03TA | ST097Q04TA | ST097Q05TA |
---|---|---|---|---|
1 | 2 | 1 | 1 | 1 |
3 | 2 | 3 | 3 | 3 |
2 | 3 | 3 | 3 | 3 |
2 | 2 | 3 | 1 | 1 |
3 | 3 | 4 | 3 | 1 |
3 | 3 | 2 | 2 | 3 |
- select() fonksiyonu belirli bir aralıkta yer alan değişkenler iki nokta : opertorü ile seçilirken, bu aralıkta dahil edilmek istenmeyen degişkenler kısa çizgi - operatorü ile hariç tutulabilir.
OGRENCIID | SINIF | Anne_Egitim | Baba_Egitim | OKUMA_ZEVK | ST097Q01TA | ST097Q02TA | ST097Q03TA | ST097Q04TA |
---|---|---|---|---|---|---|---|---|
79200768 | 10 | 2 | 2 | -0.2891 | 1 | 2 | 1 | 1 |
79201064 | 10 | 2 | 2 | 0.6040 | 3 | 2 | 3 | 3 |
79201118 | 10 | 1 | 2 | 0.6380 | 2 | 3 | 3 | 3 |
79201275 | 9 | 6 | 6 | -1.1538 | 2 | 2 | 3 | 1 |
79201481 | 9 | 4 | 4 | 0.6669 | 3 | 3 | 4 | 3 |
79201556 | 10 | 4 | 6 | 0.3568 | 3 | 3 | 2 | 2 |
11.1.1 starts_with()
Sadece select() fonksiyonu içinde çalışan birtakım fonksiyonlar değişken seçim işini kolaylaştırır.
ST097 ile başlayan degişkenlerin seçilmesi
select(midiPISA, starts_with("ST097")) %>% head(6)
ST097Q01TA | ST097Q02TA | ST097Q03TA | ST097Q04TA | ST097Q05TA |
---|---|---|---|---|
1 | 2 | 1 | 1 | 1 |
3 | 2 | 3 | 3 | 3 |
2 | 3 | 3 | 3 | 3 |
2 | 2 | 3 | 1 | 1 |
3 | 3 | 4 | 3 | 1 |
3 | 3 | 2 | 2 | 3 |
11.1.2 ends_with()
- TA ile biten degişkenlerin seçilmesi
ST097Q01TA | ST097Q02TA | ST097Q03TA | ST097Q04TA | ST097Q05TA |
---|---|---|---|---|
1 | 2 | 1 | 1 | 1 |
3 | 2 | 3 | 3 | 3 |
2 | 3 | 3 | 3 | 3 |
2 | 2 | 3 | 1 | 1 |
3 | 3 | 4 | 3 | 1 |
3 | 3 | 2 | 2 | 3 |
11.1.3 contains()
- içinde ST geçen değişkenlerin seçilmesi
ST097Q01TA | ST097Q02TA | ST097Q03TA | ST097Q04TA | ST097Q05TA |
---|---|---|---|---|
1 | 2 | 1 | 1 | 1 |
3 | 2 | 3 | 3 | 3 |
2 | 3 | 3 | 3 | 3 |
2 | 2 | 3 | 1 | 1 |
3 | 3 | 4 | 3 | 1 |
3 | 3 | 2 | 2 | 3 |
11.1.5 num_range()
- ardışık ilerleyen değişkenlerin seçilmesi
ODOKUMA1 | ODOKUMA2 | ODOKUMA3 | ODOKUMA4 | ODOKUMA5 |
---|---|---|---|---|
376.022 | 417.746 | 420.630 | 413.837 | 434.434 |
512.316 | 473.229 | 563.902 | 485.396 | 500.394 |
396.383 | 413.859 | 423.121 | 452.124 | 392.434 |
393.006 | 428.757 | 364.850 | 382.522 | 378.563 |
552.457 | 570.109 | 562.955 | 530.835 | 532.487 |
441.286 | 415.682 | 406.586 | 437.001 | 473.036 |
11.1.6 Matıksal operatorler ile seçim
farklı fonksiyonları aynı anda mantıksal operatörlerle kullanarak da seçim yapabilirsiniz.
veya | operatorünün kullanılması
ODOKUMA1 | ODOKUMA2 | ODOKUMA3 | ODOKUMA4 | ODOKUMA5 | ST097Q02TA |
---|---|---|---|---|---|
376.022 | 417.746 | 420.630 | 413.837 | 434.434 | 2 |
512.316 | 473.229 | 563.902 | 485.396 | 500.394 | 2 |
396.383 | 413.859 | 423.121 | 452.124 | 392.434 | 3 |
393.006 | 428.757 | 364.850 | 382.522 | 378.563 | 2 |
552.457 | 570.109 | 562.955 | 530.835 | 532.487 | 3 |
441.286 | 415.682 | 406.586 | 437.001 | 473.036 | 3 |
- ve & operatorunun kullanılması
ODOKUMA2 |
---|
417.746 |
473.229 |
413.859 |
428.757 |
570.109 |
415.682 |
- hariç tutmak amacıyla - operatorü kullanılabilir.
OGRENCIID | SINIF | CINSIYET | Anne_Egitim | Baba_Egitim | OKUMA_ZEVK | ST097Q01TA | ST097Q03TA | ST097Q04TA | ST097Q05TA |
---|---|---|---|---|---|---|---|---|---|
79200768 | 10 | 2 | 2 | 2 | -0.2891 | 1 | 1 | 1 | 1 |
79201064 | 10 | 2 | 2 | 2 | 0.6040 | 3 | 3 | 3 | 3 |
79201118 | 10 | 1 | 1 | 2 | 0.6380 | 2 | 3 | 3 | 3 |
79201275 | 9 | 2 | 6 | 6 | -1.1538 | 2 | 3 | 1 | 1 |
79201481 | 9 | 2 | 4 | 4 | 0.6669 | 3 | 4 | 3 | 1 |
11.1.7 rename() fonksiyonu
select() fonksiyonu icinde değişken seçimi sırasında değişken adı değişimi yapılabilir.
Örnekte O_ZEVK degişkeninin adını okumazevk olarak değiştirip seçebilirsiniz.
midiPISA %>%
select(OGRENCIID,SINIF,CINSIYET,Anne_Egitim,Baba_Egitim,okumazevk = OKUMA_ZEVK) %>%
head(2)
OGRENCIID | SINIF | CINSIYET | Anne_Egitim | Baba_Egitim | okumazevk |
---|---|---|---|---|---|
79200768 | 10 | 2 | 2 | 2 | -0.2891 |
79201064 | 10 | 2 | 2 | 2 | 0.6040 |
- Örnekte ise O_ZEVK degişkeninin adı okumazevk olarak rename() fonksiyonu ile de değiştirilebilir.
midiPISA %>%
select(OGRENCIID,SINIF,CINSIYET,Anne_Egitim,Baba_Egitim,OKUMA_ZEVK) %>%
rename(okumazevk=OKUMA_ZEVK)%>%
head(2)
OGRENCIID | SINIF | CINSIYET | Anne_Egitim | Baba_Egitim | okumazevk |
---|---|---|---|---|---|
79200768 | 10 | 2 | 2 | 2 | -0.2891 |
79201064 | 10 | 2 | 2 | 2 | 0.6040 |
11.1.8 mutate fonksiyonu
mutate() fonksiyonu ile veri setine yeni değişken ekleyebilirsiniz.
transmute() fonksiyonu ile veri setine yeni değişken eklenirken, eski değişken/ler veri setiden çıkarılır.
Okumadan zevk alma maddelerinden bir veri seti oluşturup, bu veri setine toplam puan ekleme
zevk <- select(midiPISA, starts_with("ST097"))
zevk <- expss::drop_var_labs(zevk)
zevk %>%
mutate(toplam =ST097Q01TA+ST097Q02TA+ST097Q03TA+ST097Q04TA+ ST097Q05TA) %>%
head(2)
ST097Q01TA | ST097Q02TA | ST097Q03TA | ST097Q04TA | ST097Q05TA | toplam |
---|---|---|---|---|---|
1 | 2 | 1 | 1 | 1 | 6 |
3 | 2 | 3 | 3 | 3 | 14 |
- Değişken değerleri bir önceki örnekteki gibi tek tek + ile toplanacağı gibi rowSums() fonksiyonu ile de aşağıdaki gibi toplanabilir
ST097Q01TA | ST097Q02TA | ST097Q03TA | ST097Q04TA | ST097Q05TA | toplam |
---|---|---|---|---|---|
1 | 2 | 1 | 1 | 1 | 6 |
3 | 2 | 3 | 3 | 3 | 14 |
- Yeni eklenecek yeri
.before
ya da.after
argumanları ile düzenleyebilirsiniz.
toplam | ST097Q01TA | ST097Q02TA | ST097Q03TA | ST097Q04TA | ST097Q05TA |
---|---|---|---|---|---|
6 | 1 | 2 | 1 | 1 | 1 |
14 | 3 | 2 | 3 | 3 | 3 |
11.1.9 transmute() fonksiyonu
- transmute() fonksiyonu kullanılarak yeni değişken oluşturulduğunda, işlemde kullanılan değişkenler veri setinden çıkarılır.
toplam |
---|
6 |
14 |
Fonksiyonda üretilen ilk değişken kullanılarak da yeni değişken üretilebilir.
Ilk olarak okumaktan alınan zevk ölçen maddelerden yeni bir veri oluşturulmuş, daha sonra bu puanların önce toplam puanları daha sonra toplam puanların kareleri alınmıştır.
11.1.10 ifelse()
- ifelse() programlama dillerinde sıklıkla kullanılan koşullu önermelerden biridir.
ifelse(test = x<0, evet = ilkdeger , hayır = ikincideger)
## [1] "Negatif" "Pozitif" "Negatif" "Negatif" "Pozitif"
- Uygulama 7.,8.,9.,10.,11. ve 12. sınıf öğrencileri katılmaktadır.
table(midiPISA$SINIF)
##
## 7 8 9 10 11 12
## 3 19 1295 5360 207 6
- SNF değişkenini kullanarak ortaokul ve lise olmak üzere iki düzeyli OKUL adlı bir değişken oluşturalım.
midiPISA %>%
select(1:5) %>%
mutate(okul = ifelse(SINIF == 7 | SINIF == 8,
"Ortaokul", "Lise")) %>%
head(3)
OGRENCIID | SINIF | CINSIYET | Anne_Egitim | Baba_Egitim | okul |
---|---|---|---|---|---|
79200768 | 10 | 2 | 2 | 2 | Lise |
79201064 | 10 | 2 | 2 | 2 | Lise |
79201118 | 10 | 1 | 1 | 2 | Lise |
11.2 case_when()
case_when() fonksiyonu çoklu ifelse() kullanımı ile benzer işlevi sağlar.
case_when() birden fazla koşula dayalı karşılaştırmalarda yeni bir değişken oluşturmak amacıyla kullanılır.
O_OD_1 düzeye ilişikin betimsel istatistikler
summary(midiPISA$ODOKUMA1)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 175.6 402.6 463.4 464.2 525.7 771.5
- ODOKUMA1 değişkeninin kategorik hale getirilmesi
v1 <- midiPISA %>%
mutate(ODOKUMA1_kat =
case_when(
ODOKUMA1 <= 402.6 ~ "dusuk",
ODOKUMA1 > 402.6 & ODOKUMA1 < 525.7 ~ "orta",
ODOKUMA1 >=525.7 ~ "yuksek" )) %>%
select(ODOKUMA1,ODOKUMA1_kat)
- Olusturulan yeni ODOKUMA1_kat degişkeninin veri setinde nasıl dağıldığını inceleme
ODOKUMA1_kat | f |
---|---|
dusuk | 1724 |
orta | 3443 |
yuksek | 1723 |
teşekkürler !