Son 2 haftaki öğrenme günlüklerim devamı olarak bu hafta 09.12.2025 tarihinde işlediğimiz derse yönelik öğrenme günlüğümü hazırlamış bulunmaktayım.
İlk olarak ... yapısının fonksiyonları genişletmekte
kullanıldığını öğrendim. Ayrıca bu üç notkanının cat, mean gibi çeşitli
fonksiyonlarda da bu yapının olduğunu öğrendim. Bu kapsamda önceden
oluşturulmuş bir fonksiyonun yeni bir fonksiyonda kullanılmasına katkı
sağladığını anladım. Üç yıldızda ayrıca after... durumunun
olmasında ise argümanın açıkça adlandırılması gerektiğini anladım
(default tanımlar bazına özellikle dikkat edilmelidir/farklı işlev
alabilir).
Ayrıca çoklu veri seti oluşturma yapısınıda ele almış bulunmaktayız.
Bu yapının oluşturması ilk başlarda kafa karışıklığı yaşamama sebep
olmakla birlikte sonunda tam yapıyı anladım. Bu süreçte ilk olarak
fonksiyonla birlikte bir veri seti oluşturmakla birlikte veriyi bölmek
amacıyla
writexl:write_xlsx(setadı, paste("veriadı",i,.".xlsx,sep="")
benzeri bir yapı oluşturulması gerektiğini anladım. Özellikle bu burada
tekrar değerini dikkatli bir şekilde fonksyiona atamamız gerektiğini
anladım. Kontrol etme sürecinde de kendim denerken +100 sayı yazmıştım,
bu ise hatayı bulmamı zorlaştırdı. Ardından 1’e düşürünce hatamı
buldum.
Birden çok set halinde görünmesi içinde yine benzer bir fonksiyon
oluşturulması gerekmektedir. Örneğin
`for(i in 1:tekrar){ set aktarımı writexl::write_xlsx(setadı[[i]],paste(),sep=""))
yapısı oluşturulurken özellikle i atamasına dikkat ederek verdiğimiz
miktarda sayıya kadar atama yapılması sağlanmalıdır. Ayrıca
[[i]] yapısıyla birlikte ayrı sayıda dosya oluşturulması
sağlanabilir.
Farklı satır sütun sayısı olutşurmada ise for kısmından önce
function(tekrar=1,satir,sütun) ataması, set oluşturma
kısmında matrix bölümüne nrow=satir[i],ncol=sütun[i] yapısı
ekleyip, en son fonksiyonu çalıştırdığımız zamanda
fonksiyon(tekrar= n,satir=değer1:değer2,sütun=değer1:değer2)
bilgisinin atanması sağlanmalıdır. Böylece istenilen satır sütun süreci
aktarımı yapılır. Rastgele sayı üretimi süreci için ise de veris seti
üretimi yapısı için ise
matrix(sample(değer aralığı1:değer aralıgı2, satir[i]*sütun[i],replace=TRUE, nrow=satir[i],ncol=sutn[i]))
yapısının oluşturulması gerektiğini anladım.
Birden çok veriyi birlikte okumak için ise
önceliklelist() ataması yapılması gerektiğini, ardından
veriler[[i]] <- for(i in değeraralığı1:değeraraligi2){readxl:read_excel(paste("setin isminin başı_",i,".xlsx)),sep=""}
yapısının oluşturması gerektiğini anladım. Özellikle bu süreç içerisinde
sep="" ile boşluklarının okunmamasının sağlandığını
anladım. Bu döngüyü fonksiyon olarakta ele alabiliriz. Bunun için
yukarıdaki kısmı alarak sadece başına
fonksiyonadı<-function(değişkenadı){ for..... mantığıyla
birlikte yapabiliyoruz. Bununla birlikte for kısmında ise ise
değeraralığı2 yerine fonksiyondaki değişken adımızı ekleyebildiğimizi
öğrendim. Ayrıca return() fonksiyonuyla birlikte elde
ettiğimiz nesneye dönüş yapısı kurabiliriz. Bu bize sırayla farklı
nesneleri görmemize katkı sağlamaktadır. Büyük verilerde zorluk
yaşatabilir.
Geometrik ortlama hesabını da ele almış bulunmaktayız. Bu hesaplama
süreci psych paketindeki geometric.mean()
fonksiyonuyla doğrudan ele alınabilmekle birlikte fonksiyonla birlikte
de ele alabiliyoruz.
Benim bu derste dikkatimi çeken kısım stop("")
fonksiyonu oldu. Bizler bir fonksiyon oluşturduğumuzda bu fonksiyon
içerisinde de if ile bir koşul eklediğimizde eğer koşula uygun bir şart
sağlayamıyorsak bir uyarı yazdırabiliriz. Bunun yanı sıra,
prod() fonksiyonu ise birden çok çarpmanın yapılmasına
katkı sağlayan bir fonksiyon olarak görülebilirmiştir. Eğer birden çok
yolla hesaplamam yapıp her birinin sonucunu yazdırmak istiyorsak ise
data.frame(a=,b=,c=) yapısıyla birlikte yazdırmaları
yapmanın mantıklı olduğunu anladım. Veri esti oluşturulduktan sonra ise
cat ile atamaları yapıp, return(invisible(dataseti)
yapılması gerektiğini anladım.
Ayrıca bu ders kapsamında en sevdiğim yapırshiny
yapıları oldu. Doğrudan hazır kod mantığında olduğunu ve analiz aracı
olarak görebileceğimizi anladım. Gördüğümüz langtest te
yaptığım denemelerde sürekli donma sorunu yaşasam da bunun genel olarak
sunuculardan kaynaklı olduğunu anladım.
While kapsamında ise bir hata yapılması gerektiğinde sonsuz döngüye
girilebileceğini anladım. While’da koşul eklemesi yapılmadır. Bu
doğrultuda koşul doğru olduğu sürece çalışmaya devam eden bir yapı elde
edilmetkedir. Örneğin,
count <- 0 while(count <10){print(count) count <- count+1}
yapısı kurulabilir. Sonsuz döngüde ise mesela
i=12 while(i==12){print(i)} yapısı yapılabilir. Bunu
denediğimde R’ı kitlemeyi başardım. Bunun yanı sıra, while içerisinde
birden çok koşul atamasıda yapılabiliyormuş. Örneğin,
while(z >= değer && z <=değer){set yapısı, if(....), else(...)}
yapısı kurulabilirmiş (if else kısmında parantezlemeyi yanlış yazdığımı
biliyorum, daha rahat anlayabilmek için yazdım).
Yakınsama olayına ek olarakta değindik. Bu kapsamda
repeat() yapısını öğrendik. Repeat aracılığıyla
başlangıçtan itibaren sonsuz bir döngü başlatıldığını anladım. Bu repeat
döngüsünü ise break() ile düzenleyebiliriz/durdurabiliriz
(if/elsete çalıştırmalı). Bu yapılar özellikle hata bulma sürecinde
bizlere katkı sağlar diye düşünüyorum.
Deneme sürecimde ilk olarak geometric.mean()
fonksiyonunu kullanabilmek için psych paketini aktif ettim.
Ardından derste geometrik ortalama sürecinde negatif değerlerin sürece
dahil edilemeyeceğinden bahsedilmişti. Buradan yola çıkarak fonksiyon
oluşturma sürecinde if ile kontrol süreci hazırlayıp,
ardından stop ile bir hata olması durumunda ne olacağını
görmek istedim.
Veri seti uzunluğunu ele almak için ilk olarak n() ile
çözüm yolu çok aradım ancak hep hata aldığımdan dolayı
length() fonksiyonunu kullandım. Ardından doğrudan çarpım
için ilk olarak tüm elemanların çarpımını ele almak için
prod() fonksiyonunu ve n. inci dereceden kök için
^(1/verisayısı) yapısı oluşturdum. Ardından logaritmik
hesaplama için ise exp() ile son hale dönüştürme,
mean() ile ortalama alma, log() ile de
logaritmik değişim yapısını oluşturdum. Ardından
geometric.mean() fonksiyonuyla da son hesaplamayı yapıp
data.frame ile ettiğim yapıları birleştirerek
cat("") fonksiyonuyla ekrana bilgi yazdırmayı
tamamladım.
Deneme sonucumda ise pozitif değerlerde kod çalıştı. Negatifi de koymak istedim ancak knit ederken “Execution halted” uyarısı verdirtti.
library(psych)
geo_ort <- function(deger){
if(any(deger <= 0)){
stop("Deger ataması sıfır veya eksi deger olamaz.")
}
verisay <- length(deger)
dogrudan_carp <- prod(deger)^(1/verisay)
log_carp <- exp(mean(log(deger)))
psych_carp <- geometric.mean(deger)
degerler <- data.frame(
analiz_turu = c("dogruda_carpim", "logaritmik_hesap", "psychlı_hesap"),
geomort = c(dogrudan_carp, log_carp, psych_carp),
row.names = NULL
)
cat("Geometrik Ortalama Hesaplama Sonuçları (n =", verisay, ")\n")
print(degerler)
cat("\n")
return(invisible(degerler))
}
geo_ortluk <- 90:174
geo_ort(geo_ortluk)
## Geometrik Ortalama Hesaplama Sonuçları (n = 85 )
## analiz_turu geomort
## 1 dogruda_carpim 129.666
## 2 logaritmik_hesap 129.666
## 3 psychlı_hesap 129.666
##8.2’deki ödevler 8.2 kapsamıdaki sorulardan ilk ikisini derste yaptığımız için ek olarak buraya aktarmamış bulunmaktayım.
Soru kapsamında ilk olarak verilen set kodunu aktarmış bulunmaktayım.
set.seed(1786)
ornek<-exp(matrix(rnorm(2000),nrow=100))
index1.temp<-sample(1:100,10)
index2.temp<-sample(1:20,10)
for(i in 1:10){
ornek[index1.temp[i],index2.temp[i]]<- -1
}
head(ornek,6)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,] 0.5549525 0.3247338 0.5236032 0.3821027 0.4187483 0.1588847 5.226161
## [2,] 0.5671734 1.2431592 0.8812069 2.6695443 0.6984453 1.0838792 1.079946
## [3,] 4.8068457 0.3449856 0.6079096 0.9194116 1.5361330 1.9082522 0.671977
## [4,] 1.3509234 2.3569582 0.1931423 4.0707377 0.3527276 2.3498825 1.198514
## [5,] 0.9012032 0.2310683 0.2317487 1.3809955 0.9168741 0.6237213 1.609403
## [6,] 1.2331483 1.1066056 0.3546027 0.3705946 0.9002303 0.2528151 3.337512
## [,8] [,9] [,10] [,11] [,12] [,13] [,14]
## [1,] 2.6280057 1.2251526 0.4760966 5.2379018 1.4782655 1.3761338 1.0202608
## [2,] 2.2087385 0.5195551 0.3757409 0.9004808 0.7409205 2.0543842 0.3668661
## [3,] 1.5310016 0.6735007 2.2069776 0.5060078 0.7171477 1.2378655 0.3651527
## [4,] 2.5592899 1.8205257 1.2624052 0.1524106 0.3828322 1.2406799 0.7954326
## [5,] 1.1005990 1.0619758 2.1047783 2.7816902 1.4010878 0.6140937 0.5136842
## [6,] 0.9799103 2.7520425 2.5407624 1.3889136 0.4346808 1.0637950 0.1859157
## [,15] [,16] [,17] [,18] [,19] [,20]
## [1,] 0.1437680 4.1807643 1.7389423 3.0760640 1.550557 4.4838291
## [2,] 3.8674407 1.9349214 0.6333922 0.4862532 5.275571 0.1161029
## [3,] 1.4724240 0.5971116 11.5869157 0.7580736 4.755297 1.0583051
## [4,] 0.1243085 0.8376231 1.3723291 2.0884571 2.506128 1.2094517
## [5,] 6.2971803 0.8422164 1.5335222 0.3079718 2.729447 1.7164885
## [6,] 3.8052219 2.1611055 0.3280288 2.7773368 1.726558 1.3193446
Soru kapsamında “ornek veri setinde i. satırda negatif sayı yok ise çıktıda i. satırın ortalaması….dir yazsin.”,“Eğer veri setinde her hangi bir satırda negatif sayı var ise satır i negatif sayı bulunmaktadır.” ve “veri setindeki satırlardaki toplam negatif sayı toplamı üçü geçerse çktıda cok sayıda negatif sayı yazsın ve döngü çalışmayı durdursun.” yapılarının ele alınması istenmiştir.
Bu kapsamda ilk olarak, negatif satırların toplamını ele alacak bir
yapı için neg_toplam ile 0 ataması yapmış bulunmaktayım.
Ardından,for(i in 1:nrow(ornek)) yapısıyla birlikte i ile
satır değişkeni ataması, 1:nrow ile ise 1’den başlayıp toplam satır
sayısına kadar işlemin devam etmesine yönelik atama yapmış
bulunmaktayım. Bunun ardından negatif sayı değerlerinin saptanması
amacıyla sum yapısından yararlanarak satırlardaki i
değerlerinden sıfırdan küçüklerin saptanması amacıyla
sum(ornek[i,] <0 ataması yaptım vebunu ise ilk atadığım
sıfırla toplama usulüyle devam ettirdim.
Negatif sayılara yönelik sayaç mantığını kurmamın ardından ise if
kapsamında koşul ataması yaparak, print ile uyarı ataması
yapıp, break ile sürecin devam etmesini engelledim. Buna
benzer bir süreci ise pozitif sayılar ve negatif sayılar içinde
uygulamış bulunmaktayım.
neg_toplam <- 0
for(i in 1:nrow(ornek)){
neg_sayi <- sum(ornek[i, ] < 0)
neg_toplam <- neg_toplam + neg_sayi
if(neg_toplam > 3){
print("Cok sayida negatif sayi")
break
}
if(neg_sayi == 0){
ort <- mean(ornek[i, ])
print(paste("Satir", i, "ortalamasi", ort,"dir"))
}
else {
print(paste("Satir", i, "negatif sayi bulunmaktadır."))
}
}
## [1] "Satir 1 ortalamasi 1.81024640410365 dir"
## [1] "Satir 2 ortalamasi 1.38518610357355 dir"
## [1] "Satir 3 ortalamasi 1.91306477718819 dir"
## [1] "Satir 4 ortalamasi 1.4112379414075 dir"
## [1] "Satir 5 ortalamasi 1.4449874985066 dir"
## [1] "Satir 6 ortalamasi 1.45095623366252 dir"
## [1] "Satir 7 ortalamasi 1.28395242730511 dir"
## [1] "Satir 8 ortalamasi 1.09256285552594 dir"
## [1] "Satir 9 ortalamasi 1.42368154628106 dir"
## [1] "Satir 10 negatif sayi bulunmaktadır."
## [1] "Satir 11 ortalamasi 1.63867357063309 dir"
## [1] "Satir 12 negatif sayi bulunmaktadır."
## [1] "Satir 13 ortalamasi 1.47012239341985 dir"
## [1] "Satir 14 ortalamasi 1.68760963291761 dir"
## [1] "Satir 15 ortalamasi 1.51554665095691 dir"
## [1] "Satir 16 ortalamasi 1.99518274468864 dir"
## [1] "Satir 17 ortalamasi 1.47942292790106 dir"
## [1] "Satir 18 ortalamasi 1.4444947260594 dir"
## [1] "Satir 19 ortalamasi 1.54378752827146 dir"
## [1] "Satir 20 ortalamasi 2.17983862702061 dir"
## [1] "Satir 21 ortalamasi 1.48707990280766 dir"
## [1] "Satir 22 ortalamasi 2.10918427665028 dir"
## [1] "Satir 23 ortalamasi 2.53701879215026 dir"
## [1] "Satir 24 negatif sayi bulunmaktadır."
## [1] "Cok sayida negatif sayi"
Bu soru kapsamında belirli şekillerde yapay zeka desteği almış bulunduğumu ifade edebilirim.
İçi dolu kare oluşturma sürecinde ilk olarak function()
ile fonksiyon ataması yapmış bulunmaktayım. Bu süreçte n değerini
bilerek 5 atamış bulunmakla birlikte değer atamadığım durumda 4 lü bir
yapı oluştuğunu gözlemledim. Ardından döngüyü oluşturmak için
for yapısını tercih edip, cat fonksiyonu
içerisinde rep("*",n değeri) yapısıyla birlikte 5’li bir
sütun süreci oluşturmayı hedefledim.
ici_dolu_kare <- function(n=5){
for(i in 1:n){
cat(paste(rep("*", n), collapse=" "), "\n")
}
}
ici_dolu_kare ()
## * * * * *
## * * * * *
## * * * * *
## * * * * *
## * * * * *
İçi boş kare oluşturma sürecinde ise ilk olarak function
ile fonksiyon ataması yapmış olmakla birlikte üst satırı oluşturmak
amacıyla rep("*",n,collapse="") yapısını kullandım. Orta
satır içn ise de benzer bir mantıkla ilerledim. Ardından cat ile orta
satıra yönelik yazdırma sürecini gerçekleştirmiş bulunmaktayım. Alt
satır için ise yine cat fonksiyonunu kullanarak üst kısım
için yazdığım kodu tekrardan aktarmış bulunmaktayım.
ici_bos_kare <- function(n=5){
ust <- paste(rep("*", n), collapse=" ")
orta <- if(n>2) paste0("*", paste(rep(" ", 2*(n-2)+1), collapse=""), "*") else ust
cat(ust, "\n")
if(n>2) cat(paste(rep(orta, n-2), collapse="\n"), "\n")
if(n>1) cat(ust, "\n")
}
ici_bos_kare(5)
## * * * * *
## * *
## * *
## * *
## * * * * *
Sol yana yatkın üçgen oluşturmak için ise fonksiyon atamasını
yaptıktan sonra for ile her zaman yaptığımız gibi i
değişkeninin 1’den başlayıp, atanacak veri sayısına göre düzenleme için
n temelli atama yapmış bulunmaktayım. Ardından
rep("*",i) ile de ele alacağımız i sayısı kadar atama için
bir atama yapıp, collapse="" ile de satır ataması yapmış
bulunmaktayım. Son olarak, cat(paste()) fonksiyonu ile de
yazdığım üçgen yapısının aktarılmasını yapmış bulunmaktayım.
sol_ucgen <- function(n=5){
for(i in 1:n){
cat(paste(rep("*", i), collapse=" "), "\n")
}
}
sol_ucgen(5)
## *
## * *
## * * *
## * * * *
## * * * * *
Bu kodu oluştururken yapay zekadan destek almış bulunmaktayım. Üçgen
oluşturma sürecinde ise önceki yaptıklarım gibi fonksiyon içerisine 5
ataması yapmış bulunmaktayım. Ardından yapay zekanın önerisiyle birlikte
üçgenin en altındaki yıldızların hesaplanması için
maxw<-2*n-1 ataması yaptım. Ardından her satırı üretmek
amacıyla sapply fonksiyonu içerisinde 1 ve n arası ilerleme
temelli i satır oluşturma ataması yapmış bulunmaktayım. Ardından önckei
yapılarda da kurudğum gibi paste() fonksiyonuyla birlikte
yıldızların aktarılması sürecini gerçekleştirdim. Bunu yaparken de bu
sefer sayıların azalmasına yönelik olarak 2*i-1 yapısı
atamış bulunmaktayım.
Bu işlemlerin tamamlanmasının ardından ilk defa öğrendiğim ve
kullandığım sprintf("%s", n-1+nchar(yildiz),yildiz)
atamasıyla birlikte sağa yaslama yapısı kurmuş bulunmaktayım. Burada
özellikle nchar temelli yapıyla birlikte doğru sayıda boşlukla atama
yapmaya çalıştım. Son olarak
cat(paste(lines, collapse="\n"), "\n") komutu tüm satırları
birleştirdim.
ucgen <- function(n=5){
maxw <- 2*n - 1
lines <- sapply(1:n, function(i){
yildiz <- paste(rep("*", 2*i-1), collapse="")
sprintf("%*s", n - i + nchar(yildiz), yildiz)
})
cat(paste(lines, collapse="\n"), "\n")
}
ucgen()
## *
## ***
## *****
## *******
## *********
Fonksiyon çalıştığında 1’den n’e kadar ilerleyen bir döngüyü
oluşturmayı amaçladım ve for( i in 1:n) temelli bir yapı
oluşturdum. Ardıdan satırlar için boşlukları ilk olarak n-1
olarak, yıldızları ise i olarak ele aldım.Bu iki yapıyla
birlikte aslında aşağı inildikçe yıldız sayısının artışını ve yan yana
olan boşlukları korumaya çalıştım.
Ardından cat(paste() yapısını tercih ederek yıldızların
ve boşlukların yazdırılmasını sağlamış bulnumaktayım. Bu iki farklı
yazdırma işlemini ise paste0 ile birleştirmiş
bulnumaktayım. Bunu ise cat() fonksiyonu ile yazdırmış
bulunmaktayım.
bu nedenle yıldızlar birer birer artarak üçgen görünümü oluşturur.
paste komutuyla boşluklar ve yıldızlar ayrı ayrı üretilir, paste0 ile
birleştirilir ve cat komutu ile ekrana yazdırılır. Böylece her satır
boşluk + yıldız formunda yan yana yazılarak sağa yaslı bir yıldız üçgeni
elde edilmiş olur. Bunları yaparken de collapse="" yapısını
da olutşruarakta şekli tek parça halinde sunmaya çalıştım.
sag_ucgen <- function(n=5){
for(i in 1:n){
sag_bosluk <- n - i
yildiz <- i
cat(paste0(paste(rep(" ", sag_bosluk), collapse=""),
paste(rep("*", yildiz), collapse="")), "\n")
}
}
sag_ucgen(5)
## *
## **
## ***
## ****
## *****
Bu kodu oluştururken yapay zekadan yardım almış bulunmaktayım. Bu
fonksiyonda hersatırda strrep(" ", i-1) ile satır başına
aktarılmanın sağlandığını öğrendim. Ardından sep= yapısıyla
birlikte boşlukların hem satır aralarına hem de yıldızlar arasına
eklenmesini sağladım. Son olarak, değinmeyi unuttuğumu fark edip, üstte
de kullandığım gibi for ile döngü yapısını oluşturduğumu
ifade edebilirim.
paralelcizgi <- function(n=5){
for(i in 1:n) cat(strrep(" ", i-1), "*\n", sep="")
for(i in 1:n) cat(strrep(" ", i-1), "*\n", sep="")
}
paralelcizgi()
## *
## *
## *
## *
## *
## *
## *
## *
## *
## *
İçi boş üçgeni oluştururken öncelikle
cat(strrep(" ", n-1), "*\n", sep="") yapısını kullanarak en
üstteki tek yıldızı oluşturdum. Bu satırdaki
strrep(" ", n-1) ile yıldızın sola yaslanmasını engellemek
için gerekli boşlukları oluşturdum. Ardından üçgenin orta kısmını
oluşturmak için for(i in 2:(n-1)) döngüsünü kullandım. Bu
döngüde her satırda önce dış kenar için gerekli olan soldaki boşlukları
(strrep(" ", n-i)), ardından sol kenardaki yıldızı
(*), sonra üçgenin iç boşluğunu oluşturan boşlukları
(strrep(" ", 2*i-3)), en son ise sağ kenardaki yıldızı
ekledim. Böylece üçgenin kenarları yıldızlardan, iç kısmı ise tamamen
boşluklardan oluştu. Son aşamada
cat(strrep("*", 2*n-1), "\n", sep="") yapısıyla üçgenin
tabanını çizdim. Bu kapsamda 2*n - 1 ifadesi ile alttaki
yıldız sayısını belirledim. Tüm kod boyunca `sep=
kullanarakta cat() fonksiyonunun otomatik boşluk eklemesini
engelledim.
ici_bos_ucgen<- function(n=5){
cat(strrep(" ", n-1), "*\n", sep="")
for(i in 2:(n-1)){
cat(strrep(" ", n-i), "*", strrep(" ", 2*i-3), "*\n", sep="")
}
cat(strrep("*", 2*n-1), "\n", sep="")
}
ici_bos_ucgen()
## *
## * *
## * *
## * *
## *********
for döngüsü ile liste kullanımı anlamak için tüm verileri 0 olan farklı boyutlarda verisetleri oluşturup bu veri setlerini çalışma alanınız yazdırabilirsiniz.
Bu kapsamda ilk olarak writexl paketini aktif ederek set
kaydetme sürecini garantiye almış bulunmaktayım. Ardından, sıfırlı
yapıyı oluşturmak için 9 satır sütuna kadar yapıyı oluşturmak için
function yapısından yararlanarak set yapısı, satır-sütun
bilgisi atamasını yapmış bulunmaktayım. Ardından öncelikle
list fonskyinonundan yararlanarak boş bir liste ataması
yapmış bulunmaktayım. Ardından for döngüsünden yararlanarak
ilk olarak i değerininin sett değeri olarak atanacak sayıya kadar
gitmesini i in 1:sett yapısıyla sağladım. Ardından boş
listenin atamasını yapmak için data.frame() fonksiyonundan
yararlanarak satır, nrow,ncol değerlerini yani
satır sütun sayısı yapısını satir,sütun
değişkenleriyle eşleştirmiş bulunmaktayım. Matrix’in başına ise 0
yazarak tüm sayıların sıfır olmasını sağlamış bulunmaktayım. Ardından
write_xlsx yapısıyla birlikte de listelerin excel dosyası
olarak atanmasını sağlamış bulunmaktayım.
library(writexl)
sifirli_set <- function(sett = 1, satir, sutun){
liste <- list()
for(i in 1:sett){
liste[[i]] <- data.frame(
matrix(0, nrow = satir[i], ncol = sutun[i])
)
write_xlsx(liste[[i]], paste0("sifirli_set", i, ".xlsx"))
}
return(liste)
}
sifirli_set(sett = 9, satir = 1:9, sutun = 1:9)
## [[1]]
## matrix.0..nrow...satir.i...ncol...sutun.i..
## 1 0
##
## [[2]]
## X1 X2
## 1 0 0
## 2 0 0
##
## [[3]]
## X1 X2 X3
## 1 0 0 0
## 2 0 0 0
## 3 0 0 0
##
## [[4]]
## X1 X2 X3 X4
## 1 0 0 0 0
## 2 0 0 0 0
## 3 0 0 0 0
## 4 0 0 0 0
##
## [[5]]
## X1 X2 X3 X4 X5
## 1 0 0 0 0 0
## 2 0 0 0 0 0
## 3 0 0 0 0 0
## 4 0 0 0 0 0
## 5 0 0 0 0 0
##
## [[6]]
## X1 X2 X3 X4 X5 X6
## 1 0 0 0 0 0 0
## 2 0 0 0 0 0 0
## 3 0 0 0 0 0 0
## 4 0 0 0 0 0 0
## 5 0 0 0 0 0 0
## 6 0 0 0 0 0 0
##
## [[7]]
## X1 X2 X3 X4 X5 X6 X7
## 1 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0
## 7 0 0 0 0 0 0 0
##
## [[8]]
## X1 X2 X3 X4 X5 X6 X7 X8
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0
## 7 0 0 0 0 0 0 0 0
## 8 0 0 0 0 0 0 0 0
##
## [[9]]
## X1 X2 X3 X4 X5 X6 X7 X8 X9
## 1 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0 0
## 7 0 0 0 0 0 0 0 0 0
## 8 0 0 0 0 0 0 0 0 0
## 9 0 0 0 0 0 0 0 0 0
Bu kodla ise öncelikle excel dosyalarını okuyabilmek için
readxl paketini aktif etmiş bulunmaktayım. Ardından veriler
adından boş bir liste ataması yaparak veri okuma okuma sürecine yönelik
sadece numara değişkenini ele alacak bir fonksiyon ataması yaptım. Bu
kapsamda for döngüsü kapsamında i in 1:numara değeriyle
birlikte girilen numara değerine kadar tarama yapılmasını hedeflemiş
bulunmaktayım. Ardından ise readxl ile ele alınacak
yapıları bir öncekinde oluşturulan sifirli_set yapısıyla
paste fonksiyonu ile atayıp kodu kullanıma hazır hale
getirdim.
library(readxl)
veriler <- list()
veri_okuma <- function(numara){
for(i in 1:numara){
veriler[[i]] <- read_excel(paste("sifirli_set",i,".xlsx",sep=""))
}
return(veriler)
}
veri_okuma(numara=9)
## [[1]]
## # A tibble: 1 × 1
## matrix.0..nrow...satir.i...ncol...sutun.i..
## <dbl>
## 1 0
##
## [[2]]
## # A tibble: 2 × 2
## X1 X2
## <dbl> <dbl>
## 1 0 0
## 2 0 0
##
## [[3]]
## # A tibble: 3 × 3
## X1 X2 X3
## <dbl> <dbl> <dbl>
## 1 0 0 0
## 2 0 0 0
## 3 0 0 0
##
## [[4]]
## # A tibble: 4 × 4
## X1 X2 X3 X4
## <dbl> <dbl> <dbl> <dbl>
## 1 0 0 0 0
## 2 0 0 0 0
## 3 0 0 0 0
## 4 0 0 0 0
##
## [[5]]
## # A tibble: 5 × 5
## X1 X2 X3 X4 X5
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0 0 0 0 0
## 2 0 0 0 0 0
## 3 0 0 0 0 0
## 4 0 0 0 0 0
## 5 0 0 0 0 0
##
## [[6]]
## # A tibble: 6 × 6
## X1 X2 X3 X4 X5 X6
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0 0 0 0 0 0
## 2 0 0 0 0 0 0
## 3 0 0 0 0 0 0
## 4 0 0 0 0 0 0
## 5 0 0 0 0 0 0
## 6 0 0 0 0 0 0
##
## [[7]]
## # A tibble: 7 × 7
## X1 X2 X3 X4 X5 X6 X7
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0
## 7 0 0 0 0 0 0 0
##
## [[8]]
## # A tibble: 8 × 8
## X1 X2 X3 X4 X5 X6 X7 X8
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0
## 7 0 0 0 0 0 0 0 0
## 8 0 0 0 0 0 0 0 0
##
## [[9]]
## # A tibble: 9 × 9
## X1 X2 X3 X4 X5 X6 X7 X8 X9
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0 0
## 7 0 0 0 0 0 0 0 0 0
## 8 0 0 0 0 0 0 0 0 0
## 9 0 0 0 0 0 0 0 0 0
for döngüsü ile boş bir veri setinin sütunlarını farklı şekillerde oluşarabilirsiniz. Örneğin üç sütunu kategorik değişken, dört sütunu sürekli değişken olarak oluşturabilirsiniz.
Bu kapsamda ilk olarak fonksiyon kapsamındaki değişkenleri
settt ve satir olarak belirlemiş
bulunmaktayım. Ardından for kapsamında oluşturacağım settt değerine
yönelik döngü için for(i in 1:settt) yapısını oluşturdum.
Ardından üç kategorik değişkenlik, dört sürekli değişkenli seti
oluşturmanın ilk aşaması olarak set.seed() ile sabitleme
yapmış bulunmaktayım. Ardından ise kategorik değişkenleri
sample(c(değişkenadları),satir[i](yazılacak yer),replace=TRUE
ile oluşturdum. Sürekli verileri ise derste öğrendiğimiz
runif(satir[i],0,100) yapısıyal birlikte atamış
bulunmaktayım. Ardından ise cbind(nesne1,nesne2) yapısıyla
birlikte iki nesneyi yani kategorik ve sürekli verileri tek sette
birleştirip, write_xlsx ile de excel dosyası haline
çevirmiş bulunmaktayım.
karmaset <- function(settt = 1, satir){
for(i in 1:settt){
set.seed(545)
kategorik <- data.frame(
degisken1 = sample(c("A","B","C"), satir[i], replace = TRUE),
degisken2 = sample(c("A","B","C"), satir[i], replace = TRUE),
degisken3 = sample(c("A","B","C"), satir[i], replace = TRUE)
)
surekli <- data.frame(
degisken4 = runif(satir[i], 0, 100),
degisken5 = runif(satir[i], 0, 100),
degisken6 = runif(satir[i], 0, 100),
degisken7 = runif(satir[i], 0, 100)
)
setsel <- cbind(kategorik, surekli)
write_xlsx(setsel, paste0("karmaset_", i, ".xlsx"))
}
}
karmaset(sett = 5, satir = c(5,6,7,8,9))
Bu kod chunkı 5.7.1’de yaptığım veri okuma yapısının aynısı
olduğundan dolayı ek olarak bir açıklama eklememekteyim. Bu kısımda
karışıklık olma ihtimaline karşı tek değiştirdiğim kısım numarayı
numara1, verileri veriler1, veri_okumayı
veri_okuma1 yapmak ve oluşturulan setin adını
karmaset_ olarak değiştirmem oldu.
veriler1 <- list()
veri_okuma1 <- function(numara1){
for(i in 1:numara1){
veriler1[[i]] <- read_excel(paste("karmaset_",i,".xlsx",sep=""))
}
return(veriler1)
}
veri_okuma1(numara1=5)
## [[1]]
## # A tibble: 5 × 7
## degisken1 degisken2 degisken3 degisken4 degisken5 degisken6 degisken7
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 C B B 93.0 82.2 49.5 92.0
## 2 B C B 1.77 24.9 64.4 84.2
## 3 A B B 44.1 43.3 48.5 85.4
## 4 A B C 87.3 80.0 6.31 34.7
## 5 B B C 89.8 38.8 2.76 74.5
##
## [[2]]
## # A tibble: 6 × 7
## degisken1 degisken2 degisken3 degisken4 degisken5 degisken6 degisken7
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 C C B 87.3 38.8 92.0 61.8
## 2 B B C 89.8 49.5 84.2 81.0
## 3 A B C 82.2 64.4 85.4 75.0
## 4 A B A 24.9 48.5 34.7 15.1
## 5 B B B 43.3 6.31 74.5 33.9
## 6 B B B 80.0 2.76 78.2 78.4
##
## [[3]]
## # A tibble: 7 × 7
## degisken1 degisken2 degisken3 degisken4 degisken5 degisken6 degisken7
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 C B C 24.9 6.31 78.2 24.2
## 2 B B A 43.3 2.76 61.8 3.33
## 3 A B B 80.0 92.0 81.0 71.4
## 4 A B B 38.8 84.2 75.0 40.4
## 5 B B C 49.5 85.4 15.1 35.2
## 6 B B C 64.4 34.7 33.9 77.0
## 7 C C C 48.5 74.5 78.4 58.0
##
## [[4]]
## # A tibble: 8 × 7
## degisken1 degisken2 degisken3 degisken4 degisken5 degisken6 degisken7
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 C B B 38.8 85.4 33.9 58.0
## 2 B B B 49.5 34.7 78.4 6.56
## 3 A B C 64.4 74.5 24.2 69.3
## 4 A B C 48.5 78.2 3.33 80.9
## 5 B B C 6.31 61.8 71.4 54.0
## 6 B C C 2.76 81.0 40.4 11.5
## 7 C C A 92.0 75.0 35.2 27.7
## 8 B A B 84.2 15.1 77.0 80.0
##
## [[5]]
## # A tibble: 9 × 7
## degisken1 degisken2 degisken3 degisken4 degisken5 degisken6 degisken7
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 C B C 48.5 61.8 40.4 27.7
## 2 B B C 6.31 81.0 35.2 80.0
## 3 A B C 2.76 75.0 77.0 52.3
## 4 A B C 92.0 15.1 58.0 39.2
## 5 B C A 84.2 33.9 6.56 79.9
## 6 B C B 85.4 78.4 69.3 47.4
## 7 C A A 34.7 24.2 80.9 4.12
## 8 B B C 74.5 3.33 54.0 67.6
## 9 B B C 78.2 71.4 11.5 61.7
for döngüsü ile liste kullanımı anlamak için PISA veri setinden farklı boyutlarda verisetleri çekip bu veri setlerini çalışma alanınız yazdırabilirsiniz.
İlk olarak PISA veri setinde regresyonda da kullandığım dosyayı
buraya readRDS("setadı") fonksiyonuyla aktarmış
bulunmaktayım.
pisa_odev_set <- readRDS("pisa_kucuk_veri.rds")
Kodda hataları ele alırken yapay zekadan destek aldığımı belirtmek isterim. Çözüm açısından bakıldığında önemli destek sağladı.
Kodu oluştururken ilk başta sadece dplyr paketini aktif
etmiştim. Buna karşın glimpse head gibi
denemelerimde hata alma durumuma bağlı olarak haven
paketini de aktif etmem gerektiğini anladım. Ardından öncelikle boş bir
listeyi farklisayi adıyla oluşturdum. Bunun temel amacı ise
boyut oluşturma sürecinde kullanıcak olmamdır. Ardından boyutların veri
sayısı açısından ele alınacağını düşündüğümden dolayı satir
diye bir nesne oluştururak boyutların kaçar veriden oluşacağına dair
atama yapmış bulunmaktayım. Ardından fon döngüsünü oluşturma sürecimde
ise nrow ve i ataması temelli şekilde veri sayısı atamasını
yapmış bulunmaktayım. Ardından ise seti a değişkenine atayarak temelimi
attım. Ancak ilk süreçte hatalar aldığımdan dolayı veri setini
mutate(across(where(is.labelled), as_factor)) yapısıyla
birlikte faktör yapısına çevirmiş bulunmaktayım.
İkinci for döngüsünü normalde for içinde for yaparak oluşturmaya
çalıştım ancak bir türlü yapamadığımdan dolayı ayrı yazmış olmakla
birlikte farklisayi listesindeki her boyutu ele alarak ve çalışma
alanına pisaboyutsal_1, pisaboyutsal_2 gibi ayrı değişkenler olarak
kaydettim. Ardından ise son döngüyle birlikte birlikte de
cat("boyut(satırxsutun), dim() ve
cat("toplam","nrow()) yapılarla birlikte yazdırma sürecini
gerçekleştirdim.
library(dplyr)
library(haven)
farklisayi <- list()
satir <- c(50, 100, 200, 300, 400)
for(i in 1:length(satir)){
n <- min(satir[i], nrow(pisa_odev_set))
a <- pisa_odev_set[1:n, ]
a <- a %>% mutate(across(where(is.labelled), as_factor))
farklisayi[[i]] <- a
}
for(i in 1:length(farklisayi)){
assign(paste0("pisaboyutsal_", i), farklisayi[[i]])
}
for(i in 1:length(farklisayi)){
cat("------ Boyut:", i, "------\n")
cat("Boyut (satır x sutun):", dim(farklisayi[[i]]), "\n")
cat("Toplam veri sayısı:", nrow(farklisayi[[i]]) * ncol(farklisayi[[i]]), "\n\n")
print(glimpse(farklisayi[[i]]))
cat("\n\n")
}
## ------ Boyut: 1 ------
## Boyut (satır x sutun): 50 14
## Toplam veri sayısı: 700
##
## Rows: 50
## Columns: 14
## $ CNT <fct> Finland, Finland, Finland, Finland, Finland, Finland, Finlan…
## $ IBTEACH <fct> -0.7517, -0.0213, -0.6692, -0.9663, -0.2628, -0.9032, -1.858…
## $ PV1MATH <dbl> 552.770, 295.221, 428.240, 528.308, 613.817, 462.924, 591.75…
## $ PV2MATH <dbl> 561.277, 346.528, 531.261, 519.281, 632.505, 540.319, 624.80…
## $ PV3MATH <dbl> 487.296, 306.484, 529.320, 543.374, 621.808, 509.235, 550.25…
## $ PV4MATH <dbl> 528.070, 295.911, 446.920, 512.399, 586.427, 498.500, 620.19…
## $ PV5MATH <dbl> 524.645, 349.831, 457.539, 503.091, 612.621, 527.923, 586.26…
## $ PV6MATH <dbl> 523.157, 351.599, 452.198, 512.839, 614.188, 503.144, 613.85…
## $ PV7MATH <dbl> 532.268, 356.919, 465.291, 554.881, 621.722, 522.192, 628.61…
## $ PV8MATH <dbl> 500.650, 354.747, 486.228, 514.830, 618.043, 497.731, 625.23…
## $ PV9MATH <dbl> 491.046, 263.943, 438.764, 457.858, 612.827, 523.996, 618.15…
## $ PV10MATH <dbl> 516.077, 351.914, 468.144, 527.227, 626.500, 490.842, 618.35…
## $ ST004D01T <fct> Female, Female, Male, Male, Female, Female, Female, Female, …
## $ TEACHSUP <fct> 0.5731, 0.9209, -1.0718, -0.1133, 1.4475, 1.4475, -0.2618, 0…
## # A tibble: 50 × 14
## CNT IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Finl… -0.7517 553. 561. 487. 528. 525. 523. 532. 501.
## 2 Finl… -0.0213 295. 347. 306. 296. 350. 352. 357. 355.
## 3 Finl… -0.6692 428. 531. 529. 447. 458. 452. 465. 486.
## 4 Finl… -0.9663 528. 519. 543. 512. 503. 513. 555. 515.
## 5 Finl… -0.2628 614. 633. 622. 586. 613. 614. 622. 618.
## 6 Finl… -0.9032 463. 540. 509. 498. 528. 503. 522. 498.
## 7 Finl… -1.8581 592. 625. 550. 620. 586. 614. 629. 625.
## 8 Finl… -0.6139 511. 515. 490. 538. 506. 491. 496. 532.
## 9 Finl… -0.1049 512. 539. 463. 498. 468. 506. 490. 494.
## 10 Finl… -0.0908 501. 552. 576. 570. 528. 537. 601. 530.
## # ℹ 40 more rows
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## # TEACHSUP <fct>
##
##
## ------ Boyut: 2 ------
## Boyut (satır x sutun): 100 14
## Toplam veri sayısı: 1400
##
## Rows: 100
## Columns: 14
## $ CNT <fct> Finland, Finland, Finland, Finland, Finland, Finland, Finlan…
## $ IBTEACH <fct> -0.7517, -0.0213, -0.6692, -0.9663, -0.2628, -0.9032, -1.858…
## $ PV1MATH <dbl> 552.770, 295.221, 428.240, 528.308, 613.817, 462.924, 591.75…
## $ PV2MATH <dbl> 561.277, 346.528, 531.261, 519.281, 632.505, 540.319, 624.80…
## $ PV3MATH <dbl> 487.296, 306.484, 529.320, 543.374, 621.808, 509.235, 550.25…
## $ PV4MATH <dbl> 528.070, 295.911, 446.920, 512.399, 586.427, 498.500, 620.19…
## $ PV5MATH <dbl> 524.645, 349.831, 457.539, 503.091, 612.621, 527.923, 586.26…
## $ PV6MATH <dbl> 523.157, 351.599, 452.198, 512.839, 614.188, 503.144, 613.85…
## $ PV7MATH <dbl> 532.268, 356.919, 465.291, 554.881, 621.722, 522.192, 628.61…
## $ PV8MATH <dbl> 500.650, 354.747, 486.228, 514.830, 618.043, 497.731, 625.23…
## $ PV9MATH <dbl> 491.046, 263.943, 438.764, 457.858, 612.827, 523.996, 618.15…
## $ PV10MATH <dbl> 516.077, 351.914, 468.144, 527.227, 626.500, 490.842, 618.35…
## $ ST004D01T <fct> Female, Female, Male, Male, Female, Female, Female, Female, …
## $ TEACHSUP <fct> 0.5731, 0.9209, -1.0718, -0.1133, 1.4475, 1.4475, -0.2618, 0…
## # A tibble: 100 × 14
## CNT IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Finl… -0.7517 553. 561. 487. 528. 525. 523. 532. 501.
## 2 Finl… -0.0213 295. 347. 306. 296. 350. 352. 357. 355.
## 3 Finl… -0.6692 428. 531. 529. 447. 458. 452. 465. 486.
## 4 Finl… -0.9663 528. 519. 543. 512. 503. 513. 555. 515.
## 5 Finl… -0.2628 614. 633. 622. 586. 613. 614. 622. 618.
## 6 Finl… -0.9032 463. 540. 509. 498. 528. 503. 522. 498.
## 7 Finl… -1.8581 592. 625. 550. 620. 586. 614. 629. 625.
## 8 Finl… -0.6139 511. 515. 490. 538. 506. 491. 496. 532.
## 9 Finl… -0.1049 512. 539. 463. 498. 468. 506. 490. 494.
## 10 Finl… -0.0908 501. 552. 576. 570. 528. 537. 601. 530.
## # ℹ 90 more rows
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## # TEACHSUP <fct>
##
##
## ------ Boyut: 3 ------
## Boyut (satır x sutun): 200 14
## Toplam veri sayısı: 2800
##
## Rows: 200
## Columns: 14
## $ CNT <fct> Finland, Finland, Finland, Finland, Finland, Finland, Finlan…
## $ IBTEACH <fct> -0.7517, -0.0213, -0.6692, -0.9663, -0.2628, -0.9032, -1.858…
## $ PV1MATH <dbl> 552.770, 295.221, 428.240, 528.308, 613.817, 462.924, 591.75…
## $ PV2MATH <dbl> 561.277, 346.528, 531.261, 519.281, 632.505, 540.319, 624.80…
## $ PV3MATH <dbl> 487.296, 306.484, 529.320, 543.374, 621.808, 509.235, 550.25…
## $ PV4MATH <dbl> 528.070, 295.911, 446.920, 512.399, 586.427, 498.500, 620.19…
## $ PV5MATH <dbl> 524.645, 349.831, 457.539, 503.091, 612.621, 527.923, 586.26…
## $ PV6MATH <dbl> 523.157, 351.599, 452.198, 512.839, 614.188, 503.144, 613.85…
## $ PV7MATH <dbl> 532.268, 356.919, 465.291, 554.881, 621.722, 522.192, 628.61…
## $ PV8MATH <dbl> 500.650, 354.747, 486.228, 514.830, 618.043, 497.731, 625.23…
## $ PV9MATH <dbl> 491.046, 263.943, 438.764, 457.858, 612.827, 523.996, 618.15…
## $ PV10MATH <dbl> 516.077, 351.914, 468.144, 527.227, 626.500, 490.842, 618.35…
## $ ST004D01T <fct> Female, Female, Male, Male, Female, Female, Female, Female, …
## $ TEACHSUP <fct> 0.5731, 0.9209, -1.0718, -0.1133, 1.4475, 1.4475, -0.2618, 0…
## # A tibble: 200 × 14
## CNT IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Finl… -0.7517 553. 561. 487. 528. 525. 523. 532. 501.
## 2 Finl… -0.0213 295. 347. 306. 296. 350. 352. 357. 355.
## 3 Finl… -0.6692 428. 531. 529. 447. 458. 452. 465. 486.
## 4 Finl… -0.9663 528. 519. 543. 512. 503. 513. 555. 515.
## 5 Finl… -0.2628 614. 633. 622. 586. 613. 614. 622. 618.
## 6 Finl… -0.9032 463. 540. 509. 498. 528. 503. 522. 498.
## 7 Finl… -1.8581 592. 625. 550. 620. 586. 614. 629. 625.
## 8 Finl… -0.6139 511. 515. 490. 538. 506. 491. 496. 532.
## 9 Finl… -0.1049 512. 539. 463. 498. 468. 506. 490. 494.
## 10 Finl… -0.0908 501. 552. 576. 570. 528. 537. 601. 530.
## # ℹ 190 more rows
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## # TEACHSUP <fct>
##
##
## ------ Boyut: 4 ------
## Boyut (satır x sutun): 300 14
## Toplam veri sayısı: 4200
##
## Rows: 300
## Columns: 14
## $ CNT <fct> Finland, Finland, Finland, Finland, Finland, Finland, Finlan…
## $ IBTEACH <fct> -0.7517, -0.0213, -0.6692, -0.9663, -0.2628, -0.9032, -1.858…
## $ PV1MATH <dbl> 552.770, 295.221, 428.240, 528.308, 613.817, 462.924, 591.75…
## $ PV2MATH <dbl> 561.277, 346.528, 531.261, 519.281, 632.505, 540.319, 624.80…
## $ PV3MATH <dbl> 487.296, 306.484, 529.320, 543.374, 621.808, 509.235, 550.25…
## $ PV4MATH <dbl> 528.070, 295.911, 446.920, 512.399, 586.427, 498.500, 620.19…
## $ PV5MATH <dbl> 524.645, 349.831, 457.539, 503.091, 612.621, 527.923, 586.26…
## $ PV6MATH <dbl> 523.157, 351.599, 452.198, 512.839, 614.188, 503.144, 613.85…
## $ PV7MATH <dbl> 532.268, 356.919, 465.291, 554.881, 621.722, 522.192, 628.61…
## $ PV8MATH <dbl> 500.650, 354.747, 486.228, 514.830, 618.043, 497.731, 625.23…
## $ PV9MATH <dbl> 491.046, 263.943, 438.764, 457.858, 612.827, 523.996, 618.15…
## $ PV10MATH <dbl> 516.077, 351.914, 468.144, 527.227, 626.500, 490.842, 618.35…
## $ ST004D01T <fct> Female, Female, Male, Male, Female, Female, Female, Female, …
## $ TEACHSUP <fct> 0.5731, 0.9209, -1.0718, -0.1133, 1.4475, 1.4475, -0.2618, 0…
## # A tibble: 300 × 14
## CNT IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Finl… -0.7517 553. 561. 487. 528. 525. 523. 532. 501.
## 2 Finl… -0.0213 295. 347. 306. 296. 350. 352. 357. 355.
## 3 Finl… -0.6692 428. 531. 529. 447. 458. 452. 465. 486.
## 4 Finl… -0.9663 528. 519. 543. 512. 503. 513. 555. 515.
## 5 Finl… -0.2628 614. 633. 622. 586. 613. 614. 622. 618.
## 6 Finl… -0.9032 463. 540. 509. 498. 528. 503. 522. 498.
## 7 Finl… -1.8581 592. 625. 550. 620. 586. 614. 629. 625.
## 8 Finl… -0.6139 511. 515. 490. 538. 506. 491. 496. 532.
## 9 Finl… -0.1049 512. 539. 463. 498. 468. 506. 490. 494.
## 10 Finl… -0.0908 501. 552. 576. 570. 528. 537. 601. 530.
## # ℹ 290 more rows
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## # TEACHSUP <fct>
##
##
## ------ Boyut: 5 ------
## Boyut (satır x sutun): 400 14
## Toplam veri sayısı: 5600
##
## Rows: 400
## Columns: 14
## $ CNT <fct> Finland, Finland, Finland, Finland, Finland, Finland, Finlan…
## $ IBTEACH <fct> -0.7517, -0.0213, -0.6692, -0.9663, -0.2628, -0.9032, -1.858…
## $ PV1MATH <dbl> 552.770, 295.221, 428.240, 528.308, 613.817, 462.924, 591.75…
## $ PV2MATH <dbl> 561.277, 346.528, 531.261, 519.281, 632.505, 540.319, 624.80…
## $ PV3MATH <dbl> 487.296, 306.484, 529.320, 543.374, 621.808, 509.235, 550.25…
## $ PV4MATH <dbl> 528.070, 295.911, 446.920, 512.399, 586.427, 498.500, 620.19…
## $ PV5MATH <dbl> 524.645, 349.831, 457.539, 503.091, 612.621, 527.923, 586.26…
## $ PV6MATH <dbl> 523.157, 351.599, 452.198, 512.839, 614.188, 503.144, 613.85…
## $ PV7MATH <dbl> 532.268, 356.919, 465.291, 554.881, 621.722, 522.192, 628.61…
## $ PV8MATH <dbl> 500.650, 354.747, 486.228, 514.830, 618.043, 497.731, 625.23…
## $ PV9MATH <dbl> 491.046, 263.943, 438.764, 457.858, 612.827, 523.996, 618.15…
## $ PV10MATH <dbl> 516.077, 351.914, 468.144, 527.227, 626.500, 490.842, 618.35…
## $ ST004D01T <fct> Female, Female, Male, Male, Female, Female, Female, Female, …
## $ TEACHSUP <fct> 0.5731, 0.9209, -1.0718, -0.1133, 1.4475, 1.4475, -0.2618, 0…
## # A tibble: 400 × 14
## CNT IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Finl… -0.7517 553. 561. 487. 528. 525. 523. 532. 501.
## 2 Finl… -0.0213 295. 347. 306. 296. 350. 352. 357. 355.
## 3 Finl… -0.6692 428. 531. 529. 447. 458. 452. 465. 486.
## 4 Finl… -0.9663 528. 519. 543. 512. 503. 513. 555. 515.
## 5 Finl… -0.2628 614. 633. 622. 586. 613. 614. 622. 618.
## 6 Finl… -0.9032 463. 540. 509. 498. 528. 503. 522. 498.
## 7 Finl… -1.8581 592. 625. 550. 620. 586. 614. 629. 625.
## 8 Finl… -0.6139 511. 515. 490. 538. 506. 491. 496. 532.
## 9 Finl… -0.1049 512. 539. 463. 498. 468. 506. 490. 494.
## 10 Finl… -0.0908 501. 552. 576. 570. 528. 537. 601. 530.
## # ℹ 390 more rows
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## # TEACHSUP <fct>
for döngüsü ile çalışma alanlarınızdaki veri setlerini okuyup, her bir bir seti için özet bilgileri bir listede saklayabilirsiniz.
Bu kod satırı kapsamında öncelikle elde ettiğim özet yapıları listede
sakladığımda da bir öncekiyle aynı yapıları elde ettiğimi ifade
edebilirim. İlk olarak ls(pattern = "^pisaboyutsal_") ile
çalışma alanımdaki adı pisaboyutsal_ ile başlayan tüm veri
setlerini buldum.Bunları ise setdegerleri değişkenine
atadım. Ardından, for döngüsüyle her veri setini ele alarak döngüde
get(setdegerleri[i]) fonksiyonunu kullanarak veri setinin
adından yola çıkarak nesnenin kendisine eriştim.Ardından, ozet adını
verdiğim listeye, her veri seti için aalt boyutları oluşturarak verileri
kaydettim. Bu boyutlarda, veri setinin isim bilgisini, satır ve sütun
bilgisini, ayrılmış satir ve sutun sayılarını ve en önemlisi
head(veri) kullanarak veri setinin ilk birkaç gözlemi
yansıttım.
ozet <- list()
setdegerleri<- ls(pattern = "^pisaboyutsal_")
for(i in seq_along(setdegerleri)){
veri <- get(setdegerleri[i])
ozet[[i]] <- list(
isim = setdegerleri[i],
boyut = dim(veri),
satir = nrow(veri),
sutun = ncol(veri),
baslangic = head(veri)
)
}
ozet
## [[1]]
## [[1]]$isim
## [1] "pisaboyutsal_1"
##
## [[1]]$boyut
## [1] 50 14
##
## [[1]]$satir
## [1] 50
##
## [[1]]$sutun
## [1] 14
##
## [[1]]$baslangic
## # A tibble: 6 × 14
## CNT IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Finla… -0.7517 553. 561. 487. 528. 525. 523. 532. 501.
## 2 Finla… -0.0213 295. 347. 306. 296. 350. 352. 357. 355.
## 3 Finla… -0.6692 428. 531. 529. 447. 458. 452. 465. 486.
## 4 Finla… -0.9663 528. 519. 543. 512. 503. 513. 555. 515.
## 5 Finla… -0.2628 614. 633. 622. 586. 613. 614. 622. 618.
## 6 Finla… -0.9032 463. 540. 509. 498. 528. 503. 522. 498.
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## # TEACHSUP <fct>
##
##
## [[2]]
## [[2]]$isim
## [1] "pisaboyutsal_2"
##
## [[2]]$boyut
## [1] 100 14
##
## [[2]]$satir
## [1] 100
##
## [[2]]$sutun
## [1] 14
##
## [[2]]$baslangic
## # A tibble: 6 × 14
## CNT IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Finla… -0.7517 553. 561. 487. 528. 525. 523. 532. 501.
## 2 Finla… -0.0213 295. 347. 306. 296. 350. 352. 357. 355.
## 3 Finla… -0.6692 428. 531. 529. 447. 458. 452. 465. 486.
## 4 Finla… -0.9663 528. 519. 543. 512. 503. 513. 555. 515.
## 5 Finla… -0.2628 614. 633. 622. 586. 613. 614. 622. 618.
## 6 Finla… -0.9032 463. 540. 509. 498. 528. 503. 522. 498.
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## # TEACHSUP <fct>
##
##
## [[3]]
## [[3]]$isim
## [1] "pisaboyutsal_3"
##
## [[3]]$boyut
## [1] 200 14
##
## [[3]]$satir
## [1] 200
##
## [[3]]$sutun
## [1] 14
##
## [[3]]$baslangic
## # A tibble: 6 × 14
## CNT IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Finla… -0.7517 553. 561. 487. 528. 525. 523. 532. 501.
## 2 Finla… -0.0213 295. 347. 306. 296. 350. 352. 357. 355.
## 3 Finla… -0.6692 428. 531. 529. 447. 458. 452. 465. 486.
## 4 Finla… -0.9663 528. 519. 543. 512. 503. 513. 555. 515.
## 5 Finla… -0.2628 614. 633. 622. 586. 613. 614. 622. 618.
## 6 Finla… -0.9032 463. 540. 509. 498. 528. 503. 522. 498.
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## # TEACHSUP <fct>
##
##
## [[4]]
## [[4]]$isim
## [1] "pisaboyutsal_4"
##
## [[4]]$boyut
## [1] 300 14
##
## [[4]]$satir
## [1] 300
##
## [[4]]$sutun
## [1] 14
##
## [[4]]$baslangic
## # A tibble: 6 × 14
## CNT IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Finla… -0.7517 553. 561. 487. 528. 525. 523. 532. 501.
## 2 Finla… -0.0213 295. 347. 306. 296. 350. 352. 357. 355.
## 3 Finla… -0.6692 428. 531. 529. 447. 458. 452. 465. 486.
## 4 Finla… -0.9663 528. 519. 543. 512. 503. 513. 555. 515.
## 5 Finla… -0.2628 614. 633. 622. 586. 613. 614. 622. 618.
## 6 Finla… -0.9032 463. 540. 509. 498. 528. 503. 522. 498.
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## # TEACHSUP <fct>
##
##
## [[5]]
## [[5]]$isim
## [1] "pisaboyutsal_5"
##
## [[5]]$boyut
## [1] 400 14
##
## [[5]]$satir
## [1] 400
##
## [[5]]$sutun
## [1] 14
##
## [[5]]$baslangic
## # A tibble: 6 × 14
## CNT IBTEACH PV1MATH PV2MATH PV3MATH PV4MATH PV5MATH PV6MATH PV7MATH PV8MATH
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Finla… -0.7517 553. 561. 487. 528. 525. 523. 532. 501.
## 2 Finla… -0.0213 295. 347. 306. 296. 350. 352. 357. 355.
## 3 Finla… -0.6692 428. 531. 529. 447. 458. 452. 465. 486.
## 4 Finla… -0.9663 528. 519. 543. 512. 503. 513. 555. 515.
## 5 Finla… -0.2628 614. 633. 622. 586. 613. 614. 622. 618.
## 6 Finla… -0.9032 463. 540. 509. 498. 528. 503. 522. 498.
## # ℹ 4 more variables: PV9MATH <dbl>, PV10MATH <dbl>, ST004D01T <fct>,
## # TEACHSUP <fct>
Bu kodda öncelikle veriselll adında boş bir liste
oluşturdum. Bu listeye ise oluşturacağım farklı veri setlerini ekledim.
Daha sonra setsell <- 5 ile beş farklı veri seti
oluşturacağımı ekledim ve
satirsall <- c(10, 15, 20, 25, 30) ile her veri setinin
kaç satır olacağını tanımladım. For döngüsü içinde her veri setini
sırayla oluşturdum ve ö kategorik değişken olarak Grup ve
Durum sütunlarını rastgele değerlerle oluşturdum. Ardından
sayısal değişkenler olan Puan ve Yas
sütunlarını rastgele değerlerle ürettim. Kategorik ve sayısal sütunları
cbind() ile birleştirerek abc adlı tek bir veri seti hâline
getirdim. Bu veri setinde bazı değişiklikler yaptım. Bu kapsamda puan
sütununu %10 artırdım ve grup sütunu A olan satırlarda Durum değerini
var yaptım. Ardından hazırladığım veri setini önce veriselll listesine
ekledim. Son olarak her veri setini Excel dosyası olarak kaydettim.
veriselll <- list()
setsell <- 5
satirsall <- c(10, 15, 20, 25, 30)
for(i in 1:setsell){
kategorikk <- data.frame(
Grup = sample(c("A","B","C"), satirsall[i], replace = TRUE),
Durum = sample(c("Var","Yok"), satirsall[i], replace = TRUE)
)
sayisall <- data.frame(
Puan = runif(satirsall[i], 0, 100),
Yas = sample(10:20, satirsall[i], replace = TRUE)
)
abc <- cbind(kategorikk, sayisall)
abc$Puan <- abc$Puan * 1.1
abc$Durum[abc$Grup == "A"] <- "Var"
veriselll[[i]] <- abc
write_xlsx(abc, paste0("degisik_veri_seti_", i, ".xlsx"))
}
veriselll
## [[1]]
## Grup Durum Puan Yas
## 1 B Var 17.24550 19
## 2 B Yok 85.37953 20
## 3 C Yok 36.18483 11
## 4 A Var 102.77941 14
## 5 B Yok 106.41918 18
## 6 A Var 36.72290 12
## 7 B Var 90.42521 18
## 8 A Var 103.47960 15
## 9 B Var 40.10740 18
## 10 B Yok 86.81984 13
##
## [[2]]
## Grup Durum Puan Yas
## 1 B Var 13.656281 16
## 2 B Var 87.301822 14
## 3 A Var 8.850351 18
## 4 B Yok 98.943910 19
## 5 C Yok 12.236686 14
## 6 A Var 24.216425 14
## 7 A Var 83.834315 15
## 8 B Var 68.338453 13
## 9 B Var 82.378634 13
## 10 C Yok 84.364795 16
## 11 A Var 34.119822 20
## 12 B Yok 1.927105 12
## 13 B Var 1.122165 20
## 14 C Yok 53.248903 10
## 15 C Yok 95.036806 16
##
## [[3]]
## Grup Durum Puan Yas
## 1 C Var 69.843259 19
## 2 A Var 77.620480 18
## 3 A Var 34.201655 16
## 4 A Var 16.355596 10
## 5 B Var 75.677028 16
## 6 B Var 53.730863 19
## 7 A Var 1.621530 18
## 8 C Yok 17.431350 10
## 9 B Var 46.275044 12
## 10 B Yok 6.856541 16
## 11 B Var 17.330779 15
## 12 C Yok 75.580836 12
## 13 A Var 36.490871 11
## 14 B Var 0.753383 12
## 15 C Yok 97.396690 13
## 16 C Var 14.081010 11
## 17 C Var 57.496126 18
## 18 B Var 10.426988 18
## 19 B Yok 70.480682 20
## 20 A Var 26.485127 18
##
## [[4]]
## Grup Durum Puan Yas
## 1 C Var 12.452408 12
## 2 A Var 109.703226 10
## 3 A Var 77.434080 19
## 4 B Yok 106.525871 15
## 5 B Var 26.462724 14
## 6 C Yok 17.841601 15
## 7 B Yok 45.524648 16
## 8 B Yok 66.245533 18
## 9 A Var 62.382908 14
## 10 C Yok 56.266879 12
## 11 A Var 23.421630 10
## 12 C Yok 41.165149 10
## 13 A Var 38.073729 14
## 14 B Var 5.323218 11
## 15 B Yok 49.915531 16
## 16 B Var 59.068687 20
## 17 C Var 38.220132 20
## 18 C Var 32.158477 13
## 19 B Yok 80.883909 15
## 20 B Var 83.089092 14
## 21 B Yok 26.474905 12
## 22 B Var 51.542330 10
## 23 C Yok 82.440646 10
## 24 B Var 64.866523 19
## 25 C Yok 98.099205 13
##
## [[5]]
## Grup Durum Puan Yas
## 1 B Var 19.321941 17
## 2 A Var 24.667951 17
## 3 A Var 9.321557 18
## 4 C Yok 82.035232 20
## 5 B Yok 24.701813 10
## 6 A Var 83.476107 12
## 7 C Var 14.014004 13
## 8 B Var 58.739434 19
## 9 A Var 75.822048 13
## 10 C Yok 23.492458 11
## 11 C Yok 107.214506 19
## 12 A Var 55.485505 11
## 13 C Var 103.089099 15
## 14 B Var 99.271428 16
## 15 B Yok 90.635375 14
## 16 A Var 10.881707 13
## 17 C Yok 97.077141 13
## 18 C Var 79.861745 16
## 19 A Var 87.057459 17
## 20 C Var 61.955245 20
## 21 C Yok 28.314985 13
## 22 C Var 71.122273 18
## 23 C Var 52.844573 12
## 24 B Var 76.361346 13
## 25 B Yok 36.537241 14
## 26 B Var 91.440428 19
## 27 A Var 89.776126 11
## 28 B Yok 66.153657 15
## 29 C Var 39.570510 18
## 30 C Yok 55.545912 16
Regresyon ödevim ve diğer öğrenme günlüklerim RPUBS’ta bulunmaktadır. Ek olarak, buraya aynı kodları eklememiş bulunmaktayım.