Nesne Oluşturma

Dersin üçüncü haftasında nesne oluşturma konusuna giriş yaptık. R’ ın lineer cebir temelli bir program dili olduğunu öğrendik. Vektörler tek boyutludur ve vektörler “combined” anlamına gelen c() fonksiyonu ile oluşuturulmaktadır. R’da veriler bir araya gelerek veri yapılarını oluşturmaktadır. Bunlar; vektör (vector), Karakter (character), Sayısal (numeric), Tam sayı (integer), Ondalıklı sayı (double), Karmaşık sayı (complex), Mantıksal (logical), Faktör (factor), Liste (list), Matris (matrix), Veri seti (data.frame), Dizi (array), Fonksiyon (function) olarak özetlenebilir. Aşağıda bazı veri yapılarının oluşturulmasını görebilirsiniz.

(sayisal_vektor <-  c(1,2,3))
## [1] 1 2 3
tamsayi <- 2L #Tam sayı da “L” yazılması gerekiyor. Sağlamasını aşağıdaki gibi yapabiliriz.
typeof(tamsayi) 
## [1] "integer"
ondaliksayi <- 2.5
typeof(ondaliksayi)
## [1] "double"
(karakter_vektor <-  c("a","b","c"))  ## cift tirnak
## [1] "a" "b" "c"
(mantiksal_vektor <- c(TRUE,TRUE,FALSE))
## [1]  TRUE  TRUE FALSE

Vektör İşlemleri

Vektör uzunluğu length() fonksiyonu ile vektör türleri ise class(), mode() ya da typeof() fonksiyonları ise tür belirlemek için kullanılmaktadır. Vektörler bir veya daha fazla elemandan oluşabilmektedir.

a <- 5  # tek elemandan oluşur.
# Vektör uzunluğunu öğrenmek icin length() fonksiyonu
length(a)
## [1] 1
#Tek elemanlı vektörlerde toplama
x <- 1
y <- 1
x+y
## [1] 2
#Çok elemanlı vektörlerin eleman sayılarının karşılaştırılması
x <- c(3,4,5)
y <- c(1,2,3)
length(x)==length(y)
## [1] TRUE
#Aynı uzunluktaki vektörlerde toplama, çıkarma işlemi
 x+y
## [1] 4 6 8
 x-y
## [1] 2 2 2
#Farklı uzunlukta ama eleman sayısı birbirinin tam katı olan vektörlerde toplama çıkarma işlemi
x <- 1:9
y <- c(1,2,3)
length(x)/length(y)
## [1] 3
x+y
## [1]  2  4  6  5  7  9  8 10 12
x/y
## [1] 1.0 1.0 1.0 4.0 2.5 2.0 7.0 4.0 3.0
#Farklı uzunlukta ve eleman sayısı birbirinin tam katı olmayan vektörlerde toplama işlemi
x <- 1:5
y <- c(1,2)
# vektör eleman sayıları farklı olduğunda
length(x)/length(y)
## [1] 2.5
x + y
## Warning in x + y: longer object length is not a multiple of shorter object
## length
## [1] 2 4 4 6 6
# Bir vektördeki sayıların toplanması, çarpılması, büyükten küçüğe sıralanması, eleman sırasının tersine çevrilmesi, verilerin standart sapmasının. hesaplanması, en büyük verinin gösterilmesi, en küçük verinin gösterilmesi, en büyük verinin vektörün kaçıncı elemanı olduğunun gösterilmesi,  en küçük verinin vektörün kaçıncı elemanı olduğunun gösterilmesi
d <- 1:10
sum(d)
## [1] 55
prod(d)
## [1] 3628800
sort(d)
##  [1]  1  2  3  4  5  6  7  8  9 10
rev(d)
##  [1] 10  9  8  7  6  5  4  3  2  1
sd(d)
## [1] 3.02765
max(d)
## [1] 10
min(d)
## [1] 1
which.max(d)
## [1] 10
which.min(d)
## [1] 1

İndeksler

Vektörlerden eleman sırası, isim ve mantıksal operatörler olmak üzere üç farklı yolla eleman seçilebilir.

ad  <-  c("Ali","Elif","Su","Deniz","Aras",
          "Berk","Can","Ece","Efe","Arda")
ad
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda"
#Ad vektörünün 1. elemanı
ad [1]
## [1] "Ali"
#Ad vektörünün 1, 4 ve 6. elemanı
ad[c(1,4,6)]
## [1] "Ali"   "Deniz" "Berk"
#Ad vektörünün 10.ve son  elemanı 
ad [10]
## [1] "Arda"
#Ad vektörünün son elemanının kaçıncı eleman olduğu bilinmediğinde yazılacak kod
ad [length(ad)]
## [1] "Arda"
#Ad vektörünün 1. elemanını haricinde tutacak kod
ad [-1]
## [1] "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"   "Arda"
#Ad vektöründen 1. elemanın çıkarılması ve diğer elemanlarla yeni bir vektör oluşturulması
ad_1 <- ad[-1]
ad_1
## [1] "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"   "Arda"
#Ad vektöründen 1., 4. ve 6. elemanlarının çıkarılması ve diğer elemanlarla yeni bir vektör oluşturulması
(ad_2 <- ad[-c(1,4,6)])
## [1] "Elif" "Su"   "Aras" "Can"  "Ece"  "Efe"  "Arda"
#Ad vektörüne yeni bir eleman eklenmesi
ad[11] <- "esma"
ad
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda"  "esma"
#Ad vektörüne birden fazla yeni eleman eklenmesi
ad[c(12,13)] <- c("demet", 
                  "samet")
ad
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "Aras"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda"  "esma"  "demet" "samet"
#Vektörün ortasına eleman eklenmesi "append() fonksiyonu" ile ardından kodun çalışmasının kontrol edilmesi
append(ad,"asli", after=4)
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "asli"  "Aras"  "Berk"  "Can"   "Ece"  
## [10] "Efe"   "Arda"  "esma"  "demet" "samet"
ad[5] <- "asli"
ad
##  [1] "Ali"   "Elif"  "Su"    "Deniz" "asli"  "Berk"  "Can"   "Ece"   "Efe"  
## [10] "Arda"  "esma"  "demet" "samet"

### Alıştırma

#10 kişiden oluşan bir gruptaki kişilerinin boy ve kilo ölçümleri için ise aşağıdaki vektör oluşturulmuştur.
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)
#Eğer elimizdeki vektör isimlendirilmiş bir vektör ise eleman seçimini isimle de yapabiliriz.
names(boy)
## NULL
#Ad vektörünü boy vektörü ile isimlendirebiliriz
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"]
## Arda 
##  164
boy <- unname(boy)

Vektör Oluşturmanın Farklı Yolları

# ":" ile vektör oluşturulabilir
rakamlar <- 0:9
rakamlar
##  [1] 0 1 2 3 4 5 6 7 8 9
#Belirli bir kurala göre sayı dizisi oluşturmak için "seq()" fonksiyonu kullanılabilir

seq(from=1, to=10, by=1)
##  [1]  1  2  3  4  5  6  7  8  9 10
seq(from=1, to=3, by=0.4)
## [1] 1.0 1.4 1.8 2.2 2.6 3.0
#Belirli bir aralıkta kaç eleman olacağı "length.out" ile belirtilebilir
seq (from=1, to=3, length.out=5)
## [1] 1.0 1.5 2.0 2.5 3.0
#"rep" fonksiyony ile örnekler
## üç elemanlı bir vektörün üç kere tekrar ettirilmesi
rep(c(3,4,5),3)
## [1] 3 4 5 3 4 5 3 4 5
## rakamların üç kere tekrar ettirilmesi
rep(0:9, times=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
#a <- c(3,5,7) vektörünü kullanarak aşağıdaki çıktıyı elde edecek kodu yazalım
a <- c(3,5,7)
rep(a, each=3)
## [1] 3 3 3 5 5 5 7 7 7
#a <- c(3,5,7) vektörünü kullanarak aşağıdaki çıktıyı elde edecek kodu yazalım
 #[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
a <- c(3,5,7)
rep(a, 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
#Aşağıdaki çıktıyı elde edecek kodu hazırlayınız.
#[1] 1 1 2 2 3 3 4 4
b <- c(1,2,3,4)
rep(b, each=2, times=1)
## [1] 1 1 2 2 3 3 4 4
#[1] 1 2 2 3 3 3
b <- c(1,2,3)
rep(1:3, 1:3)
## [1] 1 2 2 3 3 3
#"paste" fonksiyonu ile örnekler. Paste fonksiyonunun çıktısı her zaman karakterdir
#Aşağıdaki çıktıyı elde edecek kodu yazalım
# [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)
##  [1] "test 1"  "test 2"  "test 3"  "test 4"  "test 5"  "test 6"  "test 7" 
##  [8] "test 8"  "test 9"  "test 10"
#Aşağıdaki çıktıyı elde edecek kodu yazalım
#[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, "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"
#Aşağıdaki çıktıyı elde edecek kodu yazalım
#[1] "test A" "test B" "test C" "test D" "test 1" "test 2" "test 3" "test 4"
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 Oluşturma

Rastgele veri üretmek için sample(), runif(), rnorm() fonksiyonları kullanılabilir.Derste yaptığımız örnekleri aşağıda inceleyebilirsiniz.

runif(100, 0, 5)
##   [1] 2.84347631 3.77623297 1.93260222 3.95292893 2.81031456 3.44206538
##   [7] 0.08699058 4.02977745 4.27739712 3.20610238 4.01134723 2.05813180
##  [13] 4.07351480 3.30069401 0.77996545 2.29674230 4.64764584 4.44834515
##  [19] 1.55597532 4.02217323 0.54086601 4.13583411 1.14325540 1.87917688
##  [25] 1.90821385 2.47703996 4.20533118 3.42338170 2.40395998 4.10369496
##  [31] 3.56874430 1.33192350 4.85613877 3.04832813 1.22908805 1.27765771
##  [37] 1.89048592 2.45173379 4.50258035 3.47860104 3.36290382 2.52406901
##  [43] 2.75439943 2.12487141 3.16712626 1.75946723 2.57794977 3.54934889
##  [49] 0.04101948 2.00540815 1.81344835 2.04473629 3.04076239 4.55260217
##  [55] 0.90014115 4.92735400 2.97394699 1.46893352 0.51272333 4.28913285
##  [61] 3.07526984 1.44455670 1.77466069 2.76842077 3.37017222 4.58553753
##  [67] 2.78944805 4.20361113 4.99747635 3.04862800 1.11163919 4.78127819
##  [73] 2.59750221 4.23451234 0.22698935 4.47210893 2.21008408 2.73581260
##  [79] 4.74655535 4.87950928 2.32943374 1.54730353 1.16657220 1.11111008
##  [85] 1.69331197 0.96705608 1.48029878 0.94989827 0.99074092 3.66198384
##  [91] 4.76270261 1.95324588 2.89496837 4.06355090 4.71497240 2.50116394
##  [97] 2.58105207 0.62119361 2.91242008 0.41279797
rnorm (100, 0, 1)
##   [1] -0.29698903 -1.34587484 -0.37525617 -0.74423773 -1.78934485  0.09264985
##   [7] -1.50999079 -0.21549035 -0.99034979 -1.70326588 -0.50797976 -1.42697896
##  [13] -0.97167339  1.80509559 -2.01366688  0.96570729  0.10258054 -2.33406716
##  [19] -1.00809401  0.31163350  1.08834201  0.53245320  0.78335454 -0.62775491
##  [25] -0.81787005 -1.71553537  0.61704050 -0.72418137 -0.87637694  0.21492604
##  [31]  0.77060312  0.40714397 -0.85916923 -1.85440933 -1.38016006 -0.85676274
##  [37]  0.08032845 -0.80907429 -0.17622827  0.33883725  0.19921811 -0.60191273
##  [43]  0.39921813  1.09087847  0.23729577  1.34031894  1.70913899  0.32496414
##  [49] -0.93002352 -0.73582439 -0.11631890  0.24020299 -2.07023208  0.36753653
##  [55]  0.80932920 -2.78858117  1.77958498  0.26507176 -0.24848190  0.16595235
##  [61] -0.31362315  1.74466749 -2.04016346 -1.13306528  1.28713152  0.53373958
##  [67] -2.26368886  0.82315755  1.28398109  1.04706036  0.70901901  0.14450943
##  [73]  0.22947481  0.93342290  0.44019464 -0.42563992  0.42458929  2.77360146
##  [79] -0.68643462  0.01418357  0.49543901 -0.08781505 -0.69433629  0.49451978
##  [85] -0.56571716 -0.92412399 -1.10492797  0.52014600 -0.12389882  1.30293084
##  [91]  0.66304363 -1.38964430 -0.88430396  0.09186337 -1.74941144  0.04822717
##  [97] -1.54905490 -0.19119359 -1.33755594 -0.48246241

Alıştırma

BKI vücut ağırlığınızın metre cinsinden boy uzunluğunun karesine bölünmesi ile elde edilmektedir. Her bir bireye ait BKI değerini hesaplayınız. BKI değerlerinin ortalaması kaçtır (iki ondalığa yuvarlayınız)?

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  hesaplanması
boy_m  <- boy/100
BKI <- kilo/( boy_m * boy_m)
round(mean(BKI),2)
## [1] 20.44

Günün Sorusu 1

Aşağıdaki çıktıyı oluşturacak olan kodu oluşturunuz. Madde güçlük değerlerini runif() fonksiyonu ile oluşturabilirsiniz. Çıktının aynı olmasını istiyorsanız set.seed() fonksiyonunun 10 değeri ile kullanınız.

set.seed(10)
# 10 tane madde güçlük değeri 0 ile 1 arasında rastgele oluşturmak
madde_gucluk <- runif(10, min = 0, max = 1)

# Her bir madde güçlük değerini istenen formatta oluşturmak
output <- paste(1:10, "maddenin guclugu:", round(madde_gucluk, 2))

# Çıktıyı ekrana yazdırıyoruz
print(output)
##  [1] "1 maddenin guclugu: 0.51"  "2 maddenin guclugu: 0.31" 
##  [3] "3 maddenin guclugu: 0.43"  "4 maddenin guclugu: 0.69" 
##  [5] "5 maddenin guclugu: 0.09"  "6 maddenin guclugu: 0.23" 
##  [7] "7 maddenin guclugu: 0.27"  "8 maddenin guclugu: 0.27" 
##  [9] "9 maddenin guclugu: 0.62"  "10 maddenin guclugu: 0.43"

Mantıksal Nesneler ve Nesne Türü Sorgulama

Mantıksal nesne oluşturmak ve kontrollerini sağlamak üzerine çalıştık.

mantiksal1 <-TRUE
typeof(mantiksal1)
## [1] "logical"
mantiksal1
## [1] TRUE
#Eşitlik Sınaması 
T == TRUE
## [1] TRUE
sonuc <- 4==5 
#Karşılaştırma Operatörü 
sonuc_1 <- 4<5
sonuc_2 <- 10>100 
#Nesne Türü sorgulamak için class() fonksiyonu kullanılabilir. Bir nesne türüne ait olup olmamak ise is.*() ile kontrol edilebilir.
x<- 5.25; class(x)
## [1] "numeric"
is.numeric(x)
## [1] TRUE
is.logical(x)
## [1] FALSE

Günün Sorusu 2

Yanda yer alan ad_soyad nesnesini kullanarak ad_soyad<- c(“Ayse-Sel”,“Can-Yucel”,“Cem-Togay”,“Banu-Cift”) Aşağıdaki çıktıyı oluşturmaya çalısınız. [1] “Ayse” “Can” “Cem” “Banu” [1] “Sel” “Yucel” “Togay” “Cift”

#1.yol
ad_soyad<- c("Ayse-Sel","Can-Yucel","Cem-Togay","Banu-Cift")
strsplit(ad_soyad, "-" )
## [[1]]
## [1] "Ayse" "Sel" 
## 
## [[2]]
## [1] "Can"   "Yucel"
## 
## [[3]]
## [1] "Cem"   "Togay"
## 
## [[4]]
## [1] "Banu" "Cift"
unlist(strsplit(ad_soyad, "-"))[c(1,3,5,7)]
## [1] "Ayse" "Can"  "Cem"  "Banu"
unlist(strsplit(ad_soyad, "-"))[c(2,4,6,8)]
## [1] "Sel"   "Yucel" "Togay" "Cift"
#2.yol
ad_soyad<- c("Ayse-Sel","Can-Yucel","Cem-Togay","Banu-Cift")
ad_soyod_acik <- strsplit(ad_soyad, "-" )
unlist(ad_soyod_acik)[c(1,3,5,7)]
## [1] "Ayse" "Can"  "Cem"  "Banu"
unlist(ad_soyod_acik)[c(2,4,6,8)]
## [1] "Sel"   "Yucel" "Togay" "Cift"
ad_soyad<- c("Ayse-Sel","Can-Yucel",
             "Cem-Togay","Banu-Cift")
ad_soyad_acik <- strsplit(ad_soyad,"-")
ad <- unlist(ad_soyad_acik)[c(1,3,5,7)]
soyad <- unlist(ad_soyad_acik)[c(2,4,6,8)]
ad
## [1] "Ayse" "Can"  "Cem"  "Banu"
soyad
## [1] "Sel"   "Yucel" "Togay" "Cift"

Kendini Test Et

S1. Aşağıdaki tabloda yer alan üç sütun için birer vektör oluşturunuz. Öğrencilerin geçme notu her iki sınavın ortalaması olarak hesaplanacaktır. Bu öğrencilerin geçme notlarını hesaplayınız. Geçme notlarının betimsel istatistiklerini hesaplayınız.

Öğrenci Vize Final Ogrenci1 50 45 Ogrenci2 55 65 Ogrenci3 60 85 Ogrenci4 70 90 Ogrenci5 80 85

# 1. Sınav notları için vektörler
sinav1 <- c(78, 85, 90, 67, 95)
sinav2 <- c(88, 75, 92, 70, 93)

# 2. Geçme notunun hesaplanması
gecme_notu <- (sinav1 + sinav2) / 2

# 3. Geçme notları için istenilen betimsel istatistikler
min_gecme <- min(gecme_notu)       # Minimum
mean_gecme <- mean(gecme_notu)     # Ortalama
max_gecme <- max(gecme_notu)       # Maksimum

# Sonuçlar
cat("Geçme notlarının minumum değeri:", min_gecme, "\n")
## Geçme notlarının minumum değeri: 68.5
cat("Geçme notlarının ortalama değeri:", mean_gecme, "\n")
## Geçme notlarının ortalama değeri: 83.3
cat("Geçme notlarının maksimum değeri:", max_gecme, "\n")
## Geçme notlarının maksimum değeri: 94

S2. Birden n’e kadar olan sayların toplamını hesaplayan fonksiyon yazımı toplam() tek argümanlı fonksiyon oluşturunuz. Argüman değeri 5 olduğunda 1+2+3+4+5=15 değerini versin.

#toplam fonksiyonu tanımlanıyor
toplam <- function(n) {
  # 1'den n'e kadar olan sayıların toplamı hesaplanıyor
  sum(1:n)
}
#Argüman olarak 5 verildiğinde sonucu kontrol ediyoruz
toplam(5)
## [1] 15

S3.1’den n’ e kadar olan sayıların toplamını hesaplayan fonksiyonu argümansız olarak aşağıdaki şekilde yazmayı deneyiniz. Fonksiyonu çalıştırdığınızda ekranda/konsolda kaça kadar olan sayların toplamı hesaplansın: yazsın, kullanıcının girdiği değere göre aşağıda çıktısı çıksın.

# Argümansız toplam fonksiyonu tanımlanıyor
toplam <- function() {
  # Sabit bir değer belirledik (örneğin n = 5) çünkü Rmarkdown readline fonksiyonunu çalıştıramıyor.
  n <- 5 
  
  # 1'den n'e kadar olan sayıların toplamı hesaplanıyor
  sonuc <- sum(1:n)
  
  # Sonucu ekranda gösteriyoruz
  cat("1'den", n, "sayısına kadar olan sayıların toplamı:", sonuc, "\n")
}

# Fonksiyonu çalıştırıyoruz
toplam()
## 1'den 5 sayısına kadar olan sayıların toplamı: 15

ÖDEV

Kitap Bölüm 2 1. Soruyu tamamlayınız.

#a)
isim <- c("Ali","Defne","Meltem","Semih","Sevda","Gizem","Emre","Zeynep","Utku","Beril")

#b)
vize <- c("60","70","50","80","65","70","85","70","92","80")

#c)
final <-c("70","65","50","45","67","75","80","85","95","85")

#d)
names(vize) <- isim
names(final) <- isim

#e)
vize["Ali"]
##  Ali 
## "60"
vize["Beril"]
## Beril 
##  "80"
#f)
vize <- as.numeric(vize)
final <- as.numeric(final)
vize_ort <- mean(vize)
final_ort <- mean(final)
vize_sd <- sd(vize)
final_sd <- sd(final)

#g)
vize_min <- min(vize)
vize_max <- max(vize)
vize_median <- median(vize)
vize_quartiles <- quantile(vize, probs = c(0.25, 0.75))
summary(vize)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   50.00   66.25   70.00   72.20   80.00   92.00
final_min <- min(final)
final_max <- max(final)
final_median <- median(final)
final_quartiles <- quantile(final, probs= c(0.25, 0.75))
summary(final)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   45.00   65.50   72.50   71.70   83.75   95.00
#h)
sonuc_90_ustu <- vize > 90 & final > 90
sonuc_90_ustu
##  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
#i)
sonuc_50_alti <- vize  < 50 | final < 50
sonuc_50_alti
##  [1] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
#j)
final_yuksek <- final > vize
final_yuksek_notlar <- final[final > vize]

#k) 
final_y <- final [final >= 50]
vize_y <- vize[vize >= 50]

#l)
length(final_y)
## [1] 9
length(vize_y)
## [1] 10
#m)
en_yuksek_vize <- which.max(vize)
en_yuksek_final <- which.max(final)
en_yuksek_vize_ogrenci <- isim[en_yuksek_vize]
en_yuksek_final_ogrenci <- isim[en_yuksek_final]
print(paste("En yüksek vize puanını alan öğrenci:", en_yuksek_vize_ogrenci))
## [1] "En yüksek vize puanını alan öğrenci: Utku"
print(paste("En yüksek final puanını alan öğrenci:", en_yuksek_final_ogrenci))
## [1] "En yüksek final puanını alan öğrenci: Utku"
#n) 
toplam_vize <- sum(vize)
toplam_final <- sum(final)
print(paste("Vize puanlarının toplamı:", toplam_vize))
## [1] "Vize puanlarının toplamı: 722"
print(paste("Final puanlarının toplamı:", toplam_final))
## [1] "Final puanlarının toplamı: 717"
#o)
# Geçme notunu hesaplayarak "not" vektörünü oluşturma
not <- vize * 0.4 + final * 0.6

# "not" vektörünün betimsel istatistiklerini hesaplama
not_ort <- mean(not)
not_sd <- sd(not)
not_min <- min(not)
not_max <- max(not)
not_median <- median(not)
not_quartiles <- quantile(not, probs = c(0.25, 0.75))
not_summary <- summary(not)

# Sonuçları yazdırmak için
print(paste("Not ortalaması:", not_ort))
## [1] "Not ortalaması: 71.9"
print(paste("Not standart sapması:", not_sd))
## [1] "Not standart sapması: 12.8831500633795"
print(paste("Not minimum değeri:", not_min))
## [1] "Not minimum değeri: 50"
print(paste("Not maksimum değeri:", not_max))
## [1] "Not maksimum değeri: 93.8"
print(paste("Not medyanı:", not_median))
## [1] "Not medyanı: 70"
print("Not çeyrek değerleri:")
## [1] "Not çeyrek değerleri:"
print(not_quartiles)
##   25%   75% 
## 66.05 81.25
print("Not özeti:")
## [1] "Not özeti:"
print(not_summary)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   50.00   66.05   70.00   71.90   81.25   93.80
#p)
not_s <- sort(not, decreasing= TRUE)

#q) 
str(isim)
##  chr [1:10] "Ali" "Defne" "Meltem" "Semih" "Sevda" "Gizem" "Emre" "Zeynep" ...
str(vize)
##  num [1:10] 60 70 50 80 65 70 85 70 92 80
str(final)
##  num [1:10] 70 65 50 45 67 75 80 85 95 85
str(final_yuksek)
##  logi [1:10] TRUE FALSE FALSE FALSE TRUE TRUE ...
str(final_y)
##  num [1:9] 70 65 50 67 75 80 85 95 85
str(vize_y)
##  num [1:10] 60 70 50 80 65 70 85 70 92 80
str(toplam_vize)
##  num 722
str(toplam_final)
##  num 717
str(not)
##  num [1:10] 66 67 50 59 66.2 73 82 79 93.8 83
#r) 
gecme_yuksek <- not > not_ort
gecme_yuksek_notlar <- isim[gecme_yuksek]

#s) 

# 66 notuna sahip öğrenci var mı?
sonuc_66 <- not[not == 66]
print(sonuc_66)
## [1] 66
# 72 notuna sahip öğrenci var mı?
sonuc_72 <- not[not == 72]
print(sonuc_72)
## numeric(0)
# 88 notuna sahip öğrenci var mı?
sonuc_88 <- not[not == 88]
print(sonuc_88)
## numeric(0)

MİNİ SINAV

Bu hafta birde mini sınav olduk. Sınavdan sonra üstüne çalışıp oluşturduğum cevapları aşağıda bulabilirsiniz.

SORU 1 Yanıt

sd_1<- function(x, yuvarla =3) {
  
  n <- length(x)
  x_bar <- mean(x)
  farklar_karesi <- (x-x_bar)^2
  s <- sqrt(sum (farklar_karesi/ (n-1)))
  round(s , yuvarla)
    return(round(s, yuvarla))
}

(x <- c(3,4,5,6))
## [1] 3 4 5 6
sd_1 (x, yuvarla =3)
## [1] 1.291

SORU 2 Yanıt

set.seed(41)
puan <- rnorm(50,50,10)

SE <- function(x, guvenirlik){
  round(sd(x) * sqrt(1-guvenirlik),3)
  return(round(sd(x) * sqrt(1 - guvenirlik), 3))
}
SE(puan, 0.90)
## [1] 3.228
  1. haftadaki notlarım bu şekildeydi.İncelediğiniz için teşekkürler!
## 😄