1 Sıra Sizde

X <- cbind(1:5, 21:25)
X
##      [,1] [,2]
## [1,]    1   21
## [2,]    2   22
## [3,]    3   23
## [4,]    4   24
## [5,]    5   25
for(i in 1:nrow(X)){
  carpim = X[i,1]*X[i,2]
  cat(i,". satırdaki elemanların carpımı ", carpim, " olarak hesaplanmıştır. \n",sep = "")
}
## 1. satırdaki elemanların carpımı 21 olarak hesaplanmıştır. 
## 2. satırdaki elemanların carpımı 44 olarak hesaplanmıştır. 
## 3. satırdaki elemanların carpımı 69 olarak hesaplanmıştır. 
## 4. satırdaki elemanların carpımı 96 olarak hesaplanmıştır. 
## 5. satırdaki elemanların carpımı 125 olarak hesaplanmıştır.
for(i in 1:6){
  if(i==3){
next
  }
  print (i)}
## [1] 1
## [1] 2
## [1] 4
## [1] 5
## [1] 6
## Ders sirasi etkinlik
set.seed(41)
sayilar <- sample(0:50,30,replace = T)

for(i in 1:length(sayilar)){
  if(sayilar[i] == 0){
    next
  }
  #print(1/sayilar[i])
  cat("1/",sayilar[i],"\n",sep = "")
}
## 1/39
## 1/34
## 1/4
## 1/31
## 1/7
## 1/28
## 1/5
## 1/21
## 1/49
## 1/33
## 1/30
## 1/44
## 1/44
## 1/17
## 1/20
## 1/21
## 1/44
## 1/11
## 1/16
## 1/3
## 1/32
## 1/17
## 1/46
## 1/29
## 1/19
## 1/17
## 1/33
## 1/35
## 1/35
## 1/20
for(i in sayilar){
  if(i == 0){
    next
  }
  cat("1/",i,"\n",sep = "")
}
## 1/39
## 1/34
## 1/4
## 1/31
## 1/7
## 1/28
## 1/5
## 1/21
## 1/49
## 1/33
## 1/30
## 1/44
## 1/44
## 1/17
## 1/20
## 1/21
## 1/44
## 1/11
## 1/16
## 1/3
## 1/32
## 1/17
## 1/46
## 1/29
## 1/19
## 1/17
## 1/33
## 1/35
## 1/35
## 1/20
##kendine döngüler yaz nextli
for(i in 1:12){
  if(i==3){
break
  }
  print (i)}
## [1] 1
## [1] 2
#ders sirasi, kontrolü sağlayınca dur
set.seed(41)
sayilar <- sample(-5:5,10,replace = T)
for(i in 1:length(sayilar)){
  if(sayilar[i] < 0){
break
  }
  print (sayilar[i])}
## [1] 2
## koşulda dur ve sağladığı durumu da yazdir
for(i in 1:length(sayilar)){
  print (sayilar[i])
  if(sayilar[i] < 0){
break
  }
  }
## [1] 2
## [1] -3
set.seed(853)
y<-matrix(rnorm(1000000),nrow=1000)
z<-0*y

#loop:
time2 <- system.time(
  for(i in 1:1000){
  for(j in 1:1000){
z[i,j]<-y[i,j]^2
  }
})

time2
##    user  system elapsed 
##    0.08    0.00    0.08
time3 <- system.time(z<-y^2)
time3
##    user  system elapsed 
##       0       0       0
x <- matrix(1:6, 2, 3)
x
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
for(i in seq_len(nrow(x))) {
        for(j in seq_len(ncol(x))) {
                print(x[i, j])
        }   
}
## [1] 1
## [1] 3
## [1] 5
## [1] 2
## [1] 4
## [1] 6

#Sira Sizde

m2 <- matrix(0,nrow=5,ncol=5)
m2
##      [,1] [,2] [,3] [,4] [,5]
## [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
for(i in seq_len(nrow(m2))){
  for(j in seq_len(ncol(m2))){
    m2[i,j] <- i*j 
  }
}

m3 <- matrix(1:6,nrow=2,ncol=3)
m3
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
#deneme
for(i in seq_len(nrow(m3))){
  for(j in seq_len(ncol(m3))){
    m3[i,j] <- m3[i]*m3[j] 
  }
}

#while

count <- 0
while(count < 10) {
        print(count)
        count <- count + 1
}
## [1] 0
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
#sonsuz döngü bu i=1
#while(i<-1){
#  i=i+1
#  print(i)
#}

z <- 5
set.seed(1)

while(z >= 3 && z <= 10) { #&& iki vektör olması durumunda kullanılıyor (?) & ile aynı işi yapar şimdilik
        coin <- rbinom(1, 1, 0.5)
        
        if(coin == 1) {  ## rastgele çalışır
                z <- z + 1
        } else {
                z <- z - 1
        } 
}
print(z)
## [1] 2
x0 <- 1
tol <- 1e-8

repeat {
        x1 <- computeEstimate() #bu yok
        
        if(abs(x1 - x0) < tol) {  ## Yeterince yakın mı?
                break
        } else {
                x0 <- x1
        } 
}

2 Fonksiyonlar

f <- function() {
        ## Bu boş bir fonksiyondur
}
## Fonksiyonların kendi sınıfları vardır
class(f)  
## [1] "function"
f <- function() {
        cat("Merhaba!\n")
}
f()
## Merhaba!
f <- function(num) {
        for(i in seq_len(num)) {
                cat("Merhaba!\n")
        }
}
f(3)
## Merhaba!
## Merhaba!
## Merhaba!
f <- function(tekrar) {
        Merhaba <- "Merhaba!\n"
        for(i in seq_len(tekrar)) {
                cat(Merhaba)
        }
        chars <- nchar(Merhaba) * tekrar
        chars
}
f(3)
## Merhaba!
## Merhaba!
## Merhaba!
## [1] 27
f <- function(tekrar) {
        Merhaba <- "Merhaba!"
        for(i in seq_len(tekrar)) {
                cat(Merhaba,"\n")
        }
        chars <- nchar(Merhaba) * tekrar
        return(list(
          cikti1 = Merhaba,
          cikti2 = chars))
}
cikti <- f(3)
## Merhaba! 
## Merhaba! 
## Merhaba!
cikti
## $cikti1
## [1] "Merhaba!"
## 
## $cikti2
## [1] 24
#default deeğer atama
f <- function(tekrar=1) {
        Merhaba <- "Merhaba!"
        for(i in seq_len(tekrar)) {
                cat(Merhaba,"\n")
        }
        chars <- nchar(Merhaba) * tekrar
        return(list(
          cikti1 = Merhaba,
          cikti2 = chars))
}
f()
## Merhaba!
## $cikti1
## [1] "Merhaba!"
## 
## $cikti2
## [1] 8
library(CTT)

# Scored input (data frame is preferred)
x<-data.frame(matrix(c(0,0,0,0,0,
                        0,0,0,0,0,
                        0,0,0,0,1,
                        0,0,0,1,1,
                        0,0,1,1,1,
                        0,1,1,1,1,
                        1,1,1,1,1,
                        1,0,1,1,1,
                        0,0,0,1,1,
                        0,1,1,1,1),nrow=10,ncol=5,byrow=TRUE,
                        dimnames=list(c(paste("P",c(1:10),sep="")),c(paste("I",c(1:5),sep="")))))
x
##     I1 I2 I3 I4 I5
## P1   0  0  0  0  0
## P2   0  0  0  0  0
## P3   0  0  0  0  1
## P4   0  0  0  1  1
## P5   0  0  1  1  1
## P6   0  1  1  1  1
## P7   1  1  1  1  1
## P8   1  0  1  1  1
## P9   0  0  0  1  1
## P10  0  1  1  1  1
itemAnalysis(x)
## 
##  Number of Items 
##  5 
## 
##  Number of Examinees 
##  10 
## 
##  Coefficient Alpha 
##  0.816
# To see an item report with flags.
iA <- itemAnalysis(x, hardFlag=.25, pBisFlag=.15)
iA$itemReport
##   itemName itemMean      pBis       bis alphaIfDeleted hard lowPBis
## 1       I1      0.2 0.4036037 0.5766551      0.8325792    X        
## 2       I2      0.3 0.5299577 0.6984823      0.8027211             
## 3       I3      0.5 0.7905694 0.9908318      0.7166667             
## 4       I4      0.7 0.7237469 0.9538957      0.7424242             
## 5       I5      0.8 0.5995438 0.8566076      0.7827529
# To see more item statisitics
str(itemAnalysis(x))
## List of 6
##  $ nItem     : int 5
##  $ nPerson   : int 10
##  $ alpha     : num 0.816
##  $ scaleMean : num 2.5
##  $ scaleSD   : num 1.78
##  $ itemReport:'data.frame':  5 obs. of  5 variables:
##   ..$ itemName      : chr [1:5] "I1" "I2" "I3" "I4" ...
##   ..$ itemMean      : num [1:5] 0.2 0.3 0.5 0.7 0.8
##   ..$ pBis          : num [1:5] 0.404 0.53 0.791 0.724 0.6
##   ..$ bis           : num [1:5] 0.577 0.698 0.991 0.954 0.857
##   ..$ alphaIfDeleted: num [1:5] 0.833 0.803 0.717 0.742 0.783
##  - attr(*, "class")= chr "itemAnalysis"

2.1 Argüman Eşleştirme

#
fonksiyon_adi <- function(sayi=1,satir=c(5),sutun=c(10)){

}

#
fonksiyon_adi <- function(sayi=1,satir=c(5),sutun=c(10)){

    df <- data.frame(matrix(0,nrow=satir, ncol=sutun))
    writexl::write_xlsx(df,"veri_1.xlsx")
}
fonksiyon_adi(sayi=1,satir=c(5),sutun=c(10))

#
fonksiyon_adi <- function(sayi=3,satir=c(5,5,5),sutun=c(10,10,10)){
    
  df_list <- list() ## her bir veri setinin atanacağı yeni nesne
    for( i in 1:sayi){
    df_list[[i]] <- data.frame(matrix(0,nrow=satir[i], ncol=sutun[i])) # veri seti istenilen ozelliklerde olusturulur
     for(j in 1:sutun[i]){
     df_list[[i]][,j] <- round(rnorm(satir[i],0,1),2) #  her bir veri setinin her bir sütunu standart normal dağılıma uygun uretilir
     writexl::write_xlsx(df_list[[i]],paste("veri",i,".xlsx", sep=""))
}}}
fonksiyon_adi(sayi=3,satir=c(5,4,3),sutun=c(10,5,4))

2.2 Sıra Sizde

Geometrik ortalamanın farklı hesaplama yolları bulunmaktadır. Logaritma değerlerine dayalı olarak hesaplandığında, geometrik ortalama,gözlem değerlerinin logaritmalarının aritmetik ortalamasıdır. Bir x vektorunun geometrik ortalamaasını logartimalara dayalı olarak hesaplayan bir fonsiyon yazıp, x <- 1:100 için çalıştırınız.

x = 1:100
geom_ort <- function(vec,...){
  round(sum(log(vec))/length(vec),2)
}
geom_ort(x)
## [1] 3.64

2.3 Odevler

2.3.1 S1

create_matrix <- function(n) {
  matrix_result <- matrix(0, nrow = n, ncol = n)
    for (i in 1:n) {
    for (j in 1:n) {
      matrix_result[i, j] <- i * j
    }
  }
  
  if (n > 10) {
    matrix_result <- matrix_result[1:10, 1:10]
  }
  
  print(matrix_result)
}

result <- create_matrix(3)
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    2    4    6
## [3,]    3    6    9

2.3.2 S2

# Fibonacci dizisini oluşturma fonksiyonu (for döngüsü)
fibonacci_for <- function(n) {
  fib <- numeric(n)
  fib[1] <- 1
  fib[2] <- 1
  for (i in 3:n) {
    fib[i] <- fib[i-1] + fib[i-2]
  }
  
  print(fib)
}

n <- 10  # Fibonacci dizisinin ilk 10 elemanını alalım
result <- fibonacci_for(n)
##  [1]  1  1  2  3  5  8 13 21 34 55

2.3.3 S3

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
for( i in 1:nrow(ornek)){
  if (length(which(ornek[i,] < 0)) == 0){
    cat("Satir",i,"ortalaması",mean(ornek[i,],na.rm = T),"'dir.\n")
} else if (length(ornek[i,] < 0) > 0) {
    cat("Satir",i,"negatif sayı içermektedir.\n")
} else if (length(which(ornek[i,] < 0)) > 3){
    cat("Satir",i,"çok sayıda negatif sayı içermektedir.\n")
}}
## Satir 1 ortalaması 1.810246 'dir.
## Satir 2 ortalaması 1.385186 'dir.
## Satir 3 ortalaması 1.913065 'dir.
## Satir 4 ortalaması 1.411238 'dir.
## Satir 5 ortalaması 1.444987 'dir.
## Satir 6 ortalaması 1.450956 'dir.
## Satir 7 ortalaması 1.283952 'dir.
## Satir 8 ortalaması 1.092563 'dir.
## Satir 9 ortalaması 1.423682 'dir.
## Satir 10 negatif sayı içermektedir.
## Satir 11 ortalaması 1.638674 'dir.
## Satir 12 negatif sayı içermektedir.
## Satir 13 ortalaması 1.470122 'dir.
## Satir 14 ortalaması 1.68761 'dir.
## Satir 15 ortalaması 1.515547 'dir.
## Satir 16 ortalaması 1.995183 'dir.
## Satir 17 ortalaması 1.479423 'dir.
## Satir 18 ortalaması 1.444495 'dir.
## Satir 19 ortalaması 1.543788 'dir.
## Satir 20 ortalaması 2.179839 'dir.
## Satir 21 ortalaması 1.48708 'dir.
## Satir 22 ortalaması 2.109184 'dir.
## Satir 23 ortalaması 2.537019 'dir.
## Satir 24 negatif sayı içermektedir.
## Satir 25 negatif sayı içermektedir.
## Satir 26 ortalaması 0.9815739 'dir.
## Satir 27 ortalaması 2.101201 'dir.
## Satir 28 ortalaması 1.587085 'dir.
## Satir 29 ortalaması 2.079341 'dir.
## Satir 30 ortalaması 1.628384 'dir.
## Satir 31 ortalaması 1.062133 'dir.
## Satir 32 ortalaması 1.301769 'dir.
## Satir 33 ortalaması 1.227166 'dir.
## Satir 34 ortalaması 1.680898 'dir.
## Satir 35 ortalaması 2.04331 'dir.
## Satir 36 ortalaması 1.620427 'dir.
## Satir 37 ortalaması 1.495115 'dir.
## Satir 38 negatif sayı içermektedir.
## Satir 39 ortalaması 1.649573 'dir.
## Satir 40 negatif sayı içermektedir.
## Satir 41 ortalaması 1.610874 'dir.
## Satir 42 ortalaması 2.512928 'dir.
## Satir 43 ortalaması 1.292538 'dir.
## Satir 44 ortalaması 0.9953383 'dir.
## Satir 45 ortalaması 1.063196 'dir.
## Satir 46 ortalaması 2.08723 'dir.
## Satir 47 ortalaması 1.638381 'dir.
## Satir 48 ortalaması 1.587481 'dir.
## Satir 49 ortalaması 1.360392 'dir.
## Satir 50 ortalaması 2.503081 'dir.
## Satir 51 negatif sayı içermektedir.
## Satir 52 ortalaması 1.170185 'dir.
## Satir 53 ortalaması 1.399327 'dir.
## Satir 54 ortalaması 0.8518139 'dir.
## Satir 55 ortalaması 1.388742 'dir.
## Satir 56 ortalaması 1.288191 'dir.
## Satir 57 ortalaması 2.405831 'dir.
## Satir 58 ortalaması 0.9549096 'dir.
## Satir 59 ortalaması 1.372126 'dir.
## Satir 60 ortalaması 1.382571 'dir.
## Satir 61 ortalaması 1.133602 'dir.
## Satir 62 ortalaması 0.7106791 'dir.
## Satir 63 ortalaması 1.018546 'dir.
## Satir 64 negatif sayı içermektedir.
## Satir 65 ortalaması 1.159658 'dir.
## Satir 66 ortalaması 0.8425556 'dir.
## Satir 67 ortalaması 1.350846 'dir.
## Satir 68 ortalaması 1.14464 'dir.
## Satir 69 ortalaması 1.315107 'dir.
## Satir 70 ortalaması 1.602467 'dir.
## Satir 71 ortalaması 1.9137 'dir.
## Satir 72 ortalaması 2.177261 'dir.
## Satir 73 ortalaması 1.150917 'dir.
## Satir 74 ortalaması 3.378813 'dir.
## Satir 75 ortalaması 1.445871 'dir.
## Satir 76 ortalaması 1.65785 'dir.
## Satir 77 ortalaması 1.11154 'dir.
## Satir 78 ortalaması 1.663698 'dir.
## Satir 79 ortalaması 1.372642 'dir.
## Satir 80 ortalaması 1.455401 'dir.
## Satir 81 ortalaması 1.154774 'dir.
## Satir 82 ortalaması 3.348687 'dir.
## Satir 83 ortalaması 2.635185 'dir.
## Satir 84 ortalaması 1.3548 'dir.
## Satir 85 ortalaması 1.95681 'dir.
## Satir 86 negatif sayı içermektedir.
## Satir 87 ortalaması 1.450208 'dir.
## Satir 88 ortalaması 1.150915 'dir.
## Satir 89 ortalaması 1.255246 'dir.
## Satir 90 ortalaması 0.763787 'dir.
## Satir 91 ortalaması 1.2954 'dir.
## Satir 92 negatif sayı içermektedir.
## Satir 93 ortalaması 1.23735 'dir.
## Satir 94 ortalaması 2.151894 'dir.
## Satir 95 ortalaması 1.48521 'dir.
## Satir 96 ortalaması 1.569037 'dir.
## Satir 97 ortalaması 1.749064 'dir.
## Satir 98 ortalaması 2.91383 'dir.
## Satir 99 ortalaması 1.324444 'dir.
## Satir 100 ortalaması 1.720395 'dir.

2.3.4 Tugay deneme - Tek değişkenli uç değer çıkartma

library(tuev)
library(dplyr)
timss2019 <- tuev::TIMSS19_btsturm7
character <- select(timss2019,starts_with("BTBG06")) %>% na.omit()
character <- haven::zap_labels(character)

head(character);nrow(character)
## # A tibble: 6 × 12
##   BTBG06A BTBG06B BTBG06C BTBG06D BTBG06E BTBG06F BTBG06G BTBG06H BTBG06I
##     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1       2       2       2       2       4       4       2       3       4
## 2       1       2       1       2       4       4       4       4       3
## 3       1       1       2       1       4       5       2       5       5
## 4       3       3       2       4       5       5       3       5       5
## 5       2       2       3       2       3       3       3       3       3
## 6       2       2       2       1       3       3       3       3       3
## # ℹ 3 more variables: BTBG06J <dbl>, BTBG06K <dbl>, BTBG06L <dbl>
## [1] 177
remove_outliers <- function(df, threshold = 3) {
  outlier_indices <- c()
  for (col in names(df)) {
    if (is.numeric(df[[col]])) {
      mean_col <- mean(df[[col]], na.rm = TRUE)
      sd_col <- sd(df[[col]], na.rm = TRUE)
      z_scores <- (df[[col]] - mean_col) / sd_col
      outlier_indices <- c(outlier_indices, which(abs(z_scores) > threshold))
    }
  }
  
 outlier_indices <- unique(outlier_indices)
 df_no_outliers <- df[-outlier_indices, ]
  
  (df_no_outliers)
}

no_outlier_data <- remove_outliers(character)
head(no_outlier_data)
## # A tibble: 6 × 12
##   BTBG06A BTBG06B BTBG06C BTBG06D BTBG06E BTBG06F BTBG06G BTBG06H BTBG06I
##     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1       2       2       2       2       4       4       2       3       4
## 2       1       2       1       2       4       4       4       4       3
## 3       3       3       2       4       5       5       3       5       5
## 4       2       2       3       2       3       3       3       3       3
## 5       2       2       2       1       3       3       3       3       3
## 6       1       2       2       3       3       3       2       3       2
## # ℹ 3 more variables: BTBG06J <dbl>, BTBG06K <dbl>, BTBG06L <dbl>
cat(nrow(character)-nrow(no_outlier_data),"uc deger cikarildi.")
## 9 uc deger cikarildi.