# Üç niteliğe sahip bir data frame oluşturalım.
# birimlerin aynı şekilde tekrar üretilebilir olması için set.seed() fonksiyonunu kullanacağız.
# seq() fonksiyonu aralık oluşturmamızı sağlayacak, by: aralık artış sayısı
# sample() fonksiyonu tesadüfi birimler seçmemizi sağlayacak (iadeli ya da iadesiz oluşturabiliriz)
# LETTERS alfabeden büyük harfli birimler üretir.
set.seed(123)
mydata <- data.frame(x1 = seq(1, 20, by=2),
x2 = sample(100:200, 10, FALSE),
x3 = LETTERS[1:10])
mydata
## x1 x2 x3
## 1 1 130 A
## 2 3 178 B
## 3 5 150 C
## 4 7 113 D
## 5 9 166 E
## 6 11 141 F
## 7 13 149 G
## 8 15 142 H
## 9 17 197 I
## 10 19 124 J
# x4 isimli yeni bir nitelik oluşturmakl istiyorum.
# Eğer x2, 150'de büyük ise x4 niteliği 1 olarak kodlananacak diğer durum için 0
mydata$x4 <- ifelse(mydata$x2 > 150, 1,0)
mydata
## x1 x2 x3 x4
## 1 1 130 A 0
## 2 3 178 B 1
## 3 5 150 C 0
## 4 7 113 D 0
## 5 9 166 E 1
## 6 11 141 F 0
## 7 13 149 G 0
## 8 15 142 H 0
## 9 17 197 I 1
## 10 19 124 J 0
mydata$x5 <- ifelse(mydata$x3 %in% c("A","D"),
mydata$x1*2,
ifelse(mydata$x3 %in% c("B","C"),
mydata$x1*3,
mydata$x1*4))
mydata
## x1 x2 x3 x4 x5
## 1 1 130 A 0 2
## 2 3 178 B 1 9
## 3 5 150 C 0 15
## 4 7 113 D 0 14
## 5 9 166 E 1 36
## 6 11 141 F 0 44
## 7 13 149 G 0 52
## 8 15 142 H 0 60
## 9 17 197 I 1 68
## 10 19 124 J 0 76
mydata$y <- with(mydata, ifelse(x3 %in% c("A","B"), x1*2, x1*3))
mydata
## x1 x2 x3 x4 x5 y
## 1 1 130 A 0 2 2
## 2 3 178 B 1 9 6
## 3 5 150 C 0 15 15
## 4 7 113 D 0 14 21
## 5 9 166 E 1 36 27
## 6 11 141 F 0 44 33
## 7 13 149 G 0 52 39
## 8 15 142 H 0 60 45
## 9 17 197 I 1 68 51
## 10 19 124 J 0 76 57
elseif
k <- 1000
if(k>100) {
print("this value greater than 100!")
} else if (k<100) {
print("this value less than 100!")
} else {
print("this value equal 100!")
}
## [1] "this value greater than 100!"
FB <- 6
GS <- 0
if(FB > GS) {
print("FB won!")
}
## [1] "FB won!"
FB <- 5
GS <- 3
if (FB > GS) {
print("FB won!")
} else {
print("GS won!")
}
## [1] "FB won!"
FB <- 2
GS <- 2
if (FB>GS) {
print("FB won!")
} else if (FB<GS) {
print("GS won!")
} else {
print("draw!")
}
## [1] "draw!"
for (x in 1:10) {
print(x)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
# 10 defa x'i yazdıracağım demek
meyveler <- list("muz", "elma", "kiraz")
for (x in meyveler) {
print(x)
}
## [1] "muz"
## [1] "elma"
## [1] "kiraz"
meyveler <- list("muz", "elma", "kiraz")
for (x in meyveler) {
if (x == "kiraz") {
break
}
print(x)
}
## [1] "muz"
## [1] "elma"
zar <- c(1, 2, 3, 4, 5, 6)
for (x in zar) {
print(x)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
takimlar <- c("FB","GS")
for (takim in takimlar) {
print(takim)
}
## [1] "FB"
## [1] "GS"
matches <- list(c(2,1), c(5,2),c(6,3))
numberofgoals <- c()
for(match in matches) {
numberofgoals <- c(numberofgoals, sum(match))
print(numberofgoals)
}
## [1] 3
## [1] 3 7
## [1] 3 7 9
matches <- list(c(2,1), c(5,2),c(6,3))
numberofgoals <- c()
for(match in matches) {
numberofgoals <- c(numberofgoals, sum(match))
if (sum(match) == 9)
break
print(numberofgoals)
}
## [1] 3
## [1] 3 7
# i, 6'dan küçük olduğu müddetçe i'yi yazdır
i <- 1
while(i<6) {
print(i)
i = i+1
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
i <- 1
while (i < 6) {
print(i)
i <- i + 1
if (i == 4) {
break
}
}
## [1] 1
## [1] 2
## [1] 3
winner <- 0
while(winner < 9) {
print("eliminated!")
winner = winner + 1
}
## [1] "eliminated!"
## [1] "eliminated!"
## [1] "eliminated!"
## [1] "eliminated!"
## [1] "eliminated!"
## [1] "eliminated!"
## [1] "eliminated!"
## [1] "eliminated!"
## [1] "eliminated!"
powers <- function(x, y) {
# x üzeri y fonksiyonuer y
result <- x^y
print(paste(x,"uzeri", y, result, "dir"))
}
powers(8, 2)
## [1] "8 uzeri 2 64 dir"
powers(2, 8)
## [1] "2 uzeri 8 256 dir"
newfunction <- function(a) {
for(i in 1:a) {
b <- i^2
print(b)
}
}
newfunction(5)
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
dataset <- read.csv("Dataset.csv")
print(dataset)
## Country Age Salary Purchased
## 1 France 44 72000 No
## 2 Spain 27 48000 Yes
## 3 Germany 30 54000 No
## 4 Spain 38 61000 No
## 5 Germany 40 NA Yes
## 6 France 35 58000 Yes
## 7 Spain NA 52000 No
## 8 France 48 79000 Yes
## 9 Germany 50 83000 No
## 10 France 37 67000 Yes
# kaç tane kayıp veri var
sum(is.na(dataset))
## [1] 2
# aşağıdaki kodu kullanarak tüm NA satırlarını veri kümesinden kaldırabiliriz.
newdata <- na.omit(dataset)
# ya da;
newdata2 <- complete.cases(dataset)
sum(is.na(newdata2))
## [1] 0
dataset$Age <- ifelse(is.na(dataset$Age),
ave(dataset$Age,
FUN = function(x)
mean(x, na.rm = TRUE)),
dataset$Age)
print(dataset)
## Country Age Salary Purchased
## 1 France 44.00000 72000 No
## 2 Spain 27.00000 48000 Yes
## 3 Germany 30.00000 54000 No
## 4 Spain 38.00000 61000 No
## 5 Germany 40.00000 NA Yes
## 6 France 35.00000 58000 Yes
## 7 Spain 38.77778 52000 No
## 8 France 48.00000 79000 Yes
## 9 Germany 50.00000 83000 No
## 10 France 37.00000 67000 Yes
#install.packages("outliers")
library(outliers)
age <- c(18, 30, 50, 40, 25, 19, 25, 62, 34, 22)
outlier_tf <- outlier(age,logical=TRUE)
sum(outlier_tf)
## [1] 1
# aykırı değerleri bulmak için
find_outlier <- which(outlier_tf==TRUE,arr.ind=TRUE)
# aykırı değerleri kaldırmak için
newdata <- dataset[-find_outlier,]
nrow(newdata)
## [1] 9
# 18-65 arası tesadüfi olarak 30 birim üretelim
set.seed(1)
age <- sample(18:65, 30, replace = TRUE)
age
## [1] 21 56 18 51 40 60 31 35 50 38 38 59 63 27 24 26 32 38 54 58 42 63 54 54 51
## [26] 59 42 61 32 50
# serinin minimum ve maksimum değerlerini öğrenmek için
range(age)
## [1] 18 63
# onar artacak şekilde aralıkları tanımlayalım
inter <- seq(18, 70, by=10)
inter
## [1] 18 28 38 48 58 68
# aralıklar sağdan açık olacak şekilde (ya da sol) tanımlanmak için cut()
cutting <- cut(age, inter, right = FALSE)
cutting
## [1] [18,28) [48,58) [18,28) [48,58) [38,48) [58,68) [28,38) [28,38) [48,58)
## [10] [38,48) [38,48) [58,68) [58,68) [18,28) [18,28) [18,28) [28,38) [38,48)
## [19] [48,58) [58,68) [38,48) [58,68) [48,58) [48,58) [48,58) [58,68) [38,48)
## [28] [58,68) [28,38) [48,58)
## Levels: [18,28) [28,38) [38,48) [48,58) [58,68)
# tablo olarak görmek için
frequency <- table(cutting)
frequency
## cutting
## [18,28) [28,38) [38,48) [48,58) [58,68)
## 5 4 6 8 7