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
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"
#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 = " ")
#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"
#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"
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
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
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:
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
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
sayi <- round(seq(from = 1, to = 20,length.out = 40),1)
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"
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
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" ...
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