1 Giriş

Bu dosyada nesnelere ilişkin notlar yer almaktadır.

#Nesneler oluşturalım ve bazı temel işlemleri inceleyelim.
x <- 1:5
y <- c(1:2)
length(x)/length(y)
## [1] 2.5
x+y
## Warning in x + y: uzun olan nesne uzunluğu kısa olan nesne uzunluğunun bir katı
## değil
## [1] 2 4 4 6 6
sum(x)
## [1] 15
prod(x)
## [1] 120
sort(x)
## [1] 1 2 3 4 5
rev(x)
## [1] 5 4 3 2 1
sd(x)
## [1] 1.581139
max(x)
## [1] 5
min(x)
## [1] 1
which.max(x)
## [1] 5
which.min(x)
## [1] 1

1.1 Karakter ve Sayısal Veri İçeren Nesneler

ad  <-  c("Ali","Elif","Su","Deniz","Aras",
          "Berk","Can","Ece","Efe","Arda")
ad[1]
## [1] "Ali"
ad[5]
## [1] "Aras"
ad[c(1,4,6)]
## [1] "Ali"   "Deniz" "Berk"
ad[10]
## [1] "Arda"
ad[length(ad)]
## [1] "Arda"
ad[-1]
## [1] "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"   "Arda"
ad[-c(1,4,6)]
## [1] "Elif" "Su"   "Aras" "Can"  "Ece"  "Efe"  "Arda"
ad[-c(1,5)]
## [1] "Elif"  "Su"    "Deniz" "Berk"  "Can"   "Ece"   "Efe"   "Arda"
ad[length(ad)-2:length(ad)]
## [1] "Ece"   "Can"   "Berk"  "Aras"  "Deniz" "Su"    "Elif"  "Ali"
ad[11] <- "Asu" ; ad
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda"  "Asu"
ad[12:13] <- c("Han","Tugay") ; ad
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda"  "Asu"   "Han"   "Tugay"
ad <- append(ad, "Taha", after = 3)
ad <- c(ad[1:5],"Selim",ad[7:length(ad)]); ad
##  [1] "Ali"   "Elif"  "Su"    "Taha"  "Deniz" "Selim" "Berk"  "Can"   "Ece"  
## [10] "Efe"   "Arda"  "Asu"   "Han"   "Tugay"
ad  <-  c("Ali","Elif","Su","Deniz","Aras",
          "Berk","Can","Ece","Efe","Arda")
boy <- c(160,165,170,155,167,162,169,158,160,164)
kilo <-c(50,55,57,50,48,65,58,62,45,47)
names(boy) 
## NULL
names(boy) <- ad
boy
##   Ali  Elif    Su Deniz  Aras  Berk   Can   Ece   Efe  Arda 
##   160   165   170   155   167   162   169   158   160   164
boy["Arda"]; boy[c("Arda","Elif")]
## Arda 
##  164
## Arda Elif 
##  164  165
unname(boy)
##  [1] 160 165 170 155 167 162 169 158 160 164
boy
##   Ali  Elif    Su Deniz  Aras  Berk   Can   Ece   Efe  Arda 
##   160   165   170   155   167   162   169   158   160   164
rakamlar <- 0:9
rakamlar
##  [1] 0 1 2 3 4 5 6 7 8 9
seq(from = 1, to = 3,by = 2) #by kacar kacar olacagini soyluyor, length ise kac esit parcaya bolme
## [1] 1 3
seq(from = 1, to = 3, by = 0.5)
## [1] 1.0 1.5 2.0 2.5 3.0
seq(from = 1, to = 3, length = 6)
## [1] 1.0 1.4 1.8 2.2 2.6 3.0
seq(from = 1, to = 3, length.out = 6)
## [1] 1.0 1.4 1.8 2.2 2.6 3.0
rep(c(3,4,5),3)
## [1] 3 4 5 3 4 5 3 4 5
rep(0:9,3)
##  [1] 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
rep(c(3,5,7),each = 3)
## [1] 3 3 3 5 5 5 7 7 7
rep(c(3,5,7),each = 3,times = 3)
##  [1] 3 3 3 5 5 5 7 7 7 3 3 3 5 5 5 7 7 7 3 3 3 5 5 5 7 7 7
rep(c(3,5,7), times = 2, each = 3)
##  [1] 3 3 3 5 5 5 7 7 7 3 3 3 5 5 5 7 7 7
rep(c(1,2,3,4), each = 2)
## [1] 1 1 2 2 3 3 4 4
rep(c(1,2,3),times = c(1,2,3))
## [1] 1 2 2 3 3 3
paste(1:4)
## [1] "1" "2" "3" "4"
class(paste(1:4))
## [1] "character"
paste("test",1:10,sep = "_")
##  [1] "test_1"  "test_2"  "test_3"  "test_4"  "test_5"  "test_6"  "test_7" 
##  [8] "test_8"  "test_9"  "test_10"
paste("test",1:10,sep = ".")
##  [1] "test.1"  "test.2"  "test.3"  "test.4"  "test.5"  "test.6"  "test.7" 
##  [8] "test.8"  "test.9"  "test.10"
paste("test",1:10,"puan",sep="_")
##  [1] "test_1_puan"  "test_2_puan"  "test_3_puan"  "test_4_puan"  "test_5_puan" 
##  [6] "test_6_puan"  "test_7_puan"  "test_8_puan"  "test_9_puan"  "test_10_puan"
paste("test",1:10,round(rnorm(10),2),sep="_")
##  [1] "test_1_-0.6"   "test_2_1.55"   "test_3_-1.84"  "test_4_-1.06" 
##  [5] "test_5_2.16"   "test_6_1.74"   "test_7_0.68"   "test_8_-0.58" 
##  [9] "test_9_0.5"    "test_10_-1.86"
paste("test",c("A","B","C","D",1:4))
## [1] "test A" "test B" "test C" "test D" "test 1" "test 2" "test 3" "test 4"

1.2 Rastgele Veri Üretme

#rastgele veri
sample(0:100,5,replace = T)#replace yerine koyma durumunu logical
## [1] 10 84  5  2 32
hist(runif(100,0,5))

hist(rnorm(100,0,1))

###Alıştırmalar

#alistirma
ad  <-  c("Ali","Elif","Su","Deniz","Aras",
          "Berk","Can","Ece","Efe","Arda")
boy <- c(160,165,170,155,167,162,169,158,160,164)
kilo <- c(55,55,57,50,48,65,58,62,45,47)
# BKI  hesaplanmasi
boy_m  <- boy/100
index <- kilo/(boy_m^2)
round(mean(index),2)
## [1] 20.44
t(boy)
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,]  160  165  170  155  167  162  169  158  160   164
table(boy)
## boy
## 155 158 160 162 164 165 167 169 170 
##   1   1   2   1   1   1   1   1   1
ad <- "Su"
soyad <- "Sevim"
paste(ad,soyad)
## [1] "Su Sevim"
paste(ad,soyad,sep = ",")
## [1] "Su,Sevim"
letters
##  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
LETTERS
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z"
month.name
##  [1] "January"   "February"  "March"     "April"     "May"       "June"     
##  [7] "July"      "August"    "September" "October"   "November"  "December"
month.abb
##  [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
harf5 <- letters[1:5]
harf51 <- paste(harf5,1:5,sep = "_",collapse = " ")
  • Günün Sorusu 1
#gunun sorusu
set.seed(10)
paste(1:10,sep = ".",(paste(" maddenin guclugu:",runif(n = 10,min = 0,1))))
##  [1] "1. maddenin guclugu: 0.507478203158826" 
##  [2] "2. maddenin guclugu: 0.306768506066874" 
##  [3] "3. maddenin guclugu: 0.426907666493207" 
##  [4] "4. maddenin guclugu: 0.693102080840617" 
##  [5] "5. maddenin guclugu: 0.0851359688676894"
##  [6] "6. maddenin guclugu: 0.225436616456136" 
##  [7] "7. maddenin guclugu: 0.274530522990972" 
##  [8] "8. maddenin guclugu: 0.272305066231638" 
##  [9] "9. maddenin guclugu: 0.615829307818785" 
## [10] "10. maddenin guclugu: 0.429671525489539"
toupper(harf5)
## [1] "A" "B" "C" "D" "E"
tolower(harf5)
## [1] "a" "b" "c" "d" "e"
casefold(harf5,upper = F)
## [1] "a" "b" "c" "d" "e"
nchar(harf5)
## [1] 1 1 1 1 1
nchar(month.name)
##  [1] 7 8 5 5 3 4 4 6 9 7 8 8
substr("YILMAZ",1,3)
## [1] "YIL"
substring("YILMAZ",1:6,1:6)
## [1] "Y" "I" "L" "M" "A" "Z"
#mantiksal nesneler
mantik <- T
typeof(mantik)
## [1] "logical"
T == TRUE
## [1] TRUE
4==5
## [1] FALSE
4<5
## [1] TRUE
10>100
## [1] FALSE
as.numeric("3.14")
## [1] 3.14
as.integer(pi)
## [1] 3
as.numeric("olcme")
## Warning: Zorlamadan dolayı ortaya çıkan NAs
## [1] NA
as.numeric(TRUE)
## [1] 1
x <- 3.14 ; class(x)
## [1] "numeric"
typeof(x)
## [1] "double"
is.numeric(x)
## [1] TRUE
is.logical(x)
## [1] FALSE
y <- 2L ; typeof(y) ; class(y)
## [1] "integer"
## [1] "integer"
  • Günün Sorusu 2
#gunun sorusu
ad_soyad<- c("Ayse-Sel","Can-Yucel","Cem-Togay","Banu-Cift")
new <- strsplit(ad_soyad,split = "-")
new
## [[1]]
## [1] "Ayse" "Sel" 
## 
## [[2]]
## [1] "Can"   "Yucel"
## 
## [[3]]
## [1] "Cem"   "Togay"
## 
## [[4]]
## [1] "Banu" "Cift"
ad_eleman <- function(x){x[1]}
soyad_eleman <- function(x) {x[2]}
unlist(lapply(new,ad_eleman))
## [1] "Ayse" "Can"  "Cem"  "Banu"
unlist(lapply(new,soyad_eleman))
## [1] "Sel"   "Yucel" "Togay" "Cift"

1.3 Kendinizi Test Edin S1

ogrenciler <- c("Ogrenci1", "Ogrenci2", "Ogrenci3", "Ogrenci4", "Ogrenci5")
vize <- c(50, 55, 60, 70, 80)
final <- c(45, 65, 85, 90, 85)

gecme_notu <- (vize + final) / 2

sonuclar <- data.frame(Ogrenci = ogrenciler, Vize = vize, Final = final, Gecme_Notu = gecme_notu)

cat("Geçme notlarının minumum degeri:", min(sonuclar$Gecme_Notu), "\n")
## Geçme notlarının minumum degeri: 47.5
cat("Geçme notlarının ortalama degeri:", mean(sonuclar$Gecme_Notu), "\n")
## Geçme notlarının ortalama degeri: 68.5
cat("Geçme notlarının maksimum degeri:", max(sonuclar$Gecme_Notu), "\n")
## Geçme notlarının maksimum degeri: 82.5

1.4 Kendinizi Test Edin S2

toplam <- function(n) {
  return((n * (n + 1)) / 2)
}

sonuc <- toplam(5)
cat("Birden 5'e kadar olan sayıların toplamı:", sonuc, "\n")
## Birden 5'e kadar olan sayıların toplamı: 15

1.5 Kendinizi Test Edin Nesneler 2 - S1

df <- data.frame(
  TamSayi = integer(),     
  OndalikSayi = numeric(), 
  Karakter = character(),  
  Mantiksal = logical(),   
  Faktor = factor()        
)

str(df)
## 'data.frame':    0 obs. of  5 variables:
##  $ TamSayi    : int 
##  $ OndalikSayi: num 
##  $ Karakter   : chr 
##  $ Mantiksal  : logi 
##  $ Faktor     : Factor w/ 0 levels:

1.6 Kendinizi Test Edin Nesneler 2 - S2

ad <- c('Su','Pera','Sule','Can','Cem','Name','Aras','Mete','Kaan','Pelin')
puan <- c(12.5, 9, 16.5, 12, 9, 20, 14.5, 13.5, 8, 19)
deneme <- c(1, NA, 2, NA, 2, NA, 1, NA, 2, 1)
bonus <- c(1,0,1, 0, 0, 1, 1, 0,0, 1)

veri_seti <- data.frame(ad, puan, deneme, bonus)

eksik_sayi <- sum(is.na(veri_seti$deneme))

cat("Deneme sutunundaki NA sayısı:", eksik_sayi, "\n")
## Deneme sutunundaki NA sayısı: 4

2 Alıştırmalar

ogrenci_ad <- c("Ali","Defne","Meltem","Semih","Sevda","Gizem","Emre","Zeynep","Utku","Beril")
vize <- c(60,70,50,80,65,70,85,70,92,80)
final <- c(70,65,50,45,67,75,80,85,95,85)
names(vize) <- ogrenci_ad
names(final) <- ogrenci_ad
print(vize[c("Ali","Beril")])
##   Ali Beril 
##    60    80
print(final[c("Ali","Beril")])
##   Ali Beril 
##    70    85
mean(vize)
## [1] 72.2
sd(vize)
## [1] 12.40788
mean(final)
## [1] 71.7
sd(final)
## [1] 15.74131
summary(vize)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   50.00   66.25   70.00   72.20   80.00   92.00
summary(final)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   45.00   65.50   72.50   71.70   83.75   95.00
vize & final > 90
##    Ali  Defne Meltem  Semih  Sevda  Gizem   Emre Zeynep   Utku  Beril 
##  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE   TRUE  FALSE
vize < 50 | final < 50
##    Ali  Defne Meltem  Semih  Sevda  Gizem   Emre Zeynep   Utku  Beril 
##  FALSE  FALSE  FALSE   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
yenivek <- final > vize
vize_y <- vize[final > 50]
final_y <- final[final > 50]
length(vize_y)
## [1] 8
length(final_y)
## [1] 8
final[which.max(final)]
## Utku 
##   95
vize[which.max(vize)]
## Utku 
##   92
vizetop <- sum(vize)
finaltop <- sum(final)
not <- (final*0.60) + (vize*0.40)
summary(not)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   50.00   66.05   70.00   71.90   81.25   93.80
not_s <- sort(not,decreasing = T)
class(final)
## [1] "numeric"
class(final_y)
## [1] "numeric"
class(vize)
## [1] "numeric"
class(vize_y)
## [1] "numeric"
class(not)
## [1] "numeric"
class(not_s)
## [1] "numeric"
class(yenivek)
## [1] "logical"
class(ogrenci_ad)
## [1] "character"
class(finaltop)
## [1] "numeric"
class(vizetop)
## [1] "numeric"
not > mean(not)
##    Ali  Defne Meltem  Semih  Sevda  Gizem   Emre Zeynep   Utku  Beril 
##  FALSE  FALSE  FALSE  FALSE  FALSE   TRUE   TRUE   TRUE   TRUE   TRUE
not == 66
##    Ali  Defne Meltem  Semih  Sevda  Gizem   Emre Zeynep   Utku  Beril 
##   TRUE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
not == 72
##    Ali  Defne Meltem  Semih  Sevda  Gizem   Emre Zeynep   Utku  Beril 
##  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
not == 88
##    Ali  Defne Meltem  Semih  Sevda  Gizem   Emre Zeynep   Utku  Beril 
##  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE  FALSE
  • Uygun fonksiyonu kullanarak 1-20 arasına eşit aralıklarla 40 değerin yerleştiği bir vektör oluşturunuz. Oluşturduğunuz vektörün elemanlarını yüzde birler basamağına yuvarlayınız.
sayi <- round(seq(from = 1, to = 20,length.out = 40),1)
  • Uygun fonksiyonu kullanarak elemanları aşağıdaki gibi oan bir vektör oluşturunuz.
paste("ogrenci_",1:10,sep = "")
##  [1] "ogrenci_1"  "ogrenci_2"  "ogrenci_3"  "ogrenci_4"  "ogrenci_5" 
##  [6] "ogrenci_6"  "ogrenci_7"  "ogrenci_8"  "ogrenci_9"  "ogrenci_10"
  • Birinci soruda yer alan öğrencilerin cinsiyet bilgisini içeren “cins” adında bir nesne oluşturunuz. Bu nesneyi faktör olarak kaydediniz. Oluşturduğunuz “cins” nesneini kullanarak hem sayısal hem de karakter düzey değerlerine sahip iki farklı vektör oluşturunuz. Vektör düzeylerini belirleyiniz.
ogrenci_ad
##  [1] "Ali"    "Defne"  "Meltem" "Semih"  "Sevda"  "Gizem"  "Emre"   "Zeynep"
##  [9] "Utku"   "Beril"
cinsiyet <- c("E","K","K","E","K","K","E","K","E","K") 
cinsiyet_f <- as.factor(cinsiyet)
cinsiyet_n <- as.numeric(cinsiyet)
## Warning: Zorlamadan dolayı ortaya çıkan NAs
levels(cinsiyet_f)
## [1] "E" "K"
levels(cinsiyet_n)
## NULL
  • Öğrencilerin geçme notlarında 90 ve üzeri A, 80-89 aralığı B, 70-79 aralığı C, 60-69 aralığı D ve 50-59 aralığı E olacak şekilde harf_not nesnesine faktör olarak kaydediniz. Kategorileri belirtilen şekilde adlandırıp sıralayınız. Bu vektörün yapısını yazdırınız.
harf_notu_ata <- function(not) {
  if (not >= 90) {
    return("A")
  } else if (not >= 80) {
    return("B")
  } else if (not >= 70) {
    return("C")
  } else if (not >= 60) {
    return("D")
  } else {
    return("E")
  }
}

harf_not <- sapply(not, harf_notu_ata)
harf_not <- factor(harf_not, levels = c("E", "D", "C", "B", "A"), ordered = TRUE)
str(harf_not)
##  Ord.factor w/ 5 levels "E"<"D"<"C"<"B"<..: 2 2 1 1 2 3 4 3 5 4
##  - attr(*, "names")= chr [1:10] "Ali" "Defne" "Meltem" "Semih" ...
  • Vize, final ve geçme notlarından 3 sütunlu bir matris oluşturunuz.
notlar <- data.frame(vize,final,not)
#Matrisin satırlarını öğrenci isimleri ile adlandırınız.
rownames(notlar) <- ogrenci_ad
#Öğrencilerin vize, final ve notlarının ortalamasını ilgili fonksiyonu kullanarak yeni bir satır olarak ekleyiniz.
#notlar <- rbind(notlar,colMeans(notlar[,c("vize","final","not")]))
#notlar
#Öğrencilerin haf notlarını yeni bir sütun olarak matrise ekleyiniz.
notlar$harf <- harf_not
notlar
##        vize final  not harf
## Ali      60    70 66.0    D
## Defne    70    65 67.0    D
## Meltem   50    50 50.0    E
## Semih    80    45 59.0    E
## Sevda    65    67 66.2    D
## Gizem    70    75 73.0    C
## Emre     85    80 82.0    B
## Zeynep   70    85 79.0    C
## Utku     92    95 93.8    A
## Beril    80    85 83.0    B
notlar <- data.frame(
  vize = vize,
  final = final,
  not = not,
  harf= harf_not
)
notlar
##        vize final  not harf
## Ali      60    70 66.0    D
## Defne    70    65 67.0    D
## Meltem   50    50 50.0    E
## Semih    80    45 59.0    E
## Sevda    65    67 66.2    D
## Gizem    70    75 73.0    C
## Emre     85    80 82.0    B
## Zeynep   70    85 79.0    C
## Utku     92    95 93.8    A
## Beril    80    85 83.0    B