Vector
score = c(100, 90, 60, 70, 85, 90)
age = c(30, 35, 60, 50, 32, 25)
# select
score[3]
[1] 60
age[5]
[1] 32
age[10]
[1] NA
length(score)
[1] 6
length(age)
[1] 6
Append element
add in ending
age = c(age, 39)
age
[1] 30 35 60 50 32 25 39
score = c(score, 78)
score
[1] 100 90 60 70 85 90 78
add in starting
age = c(40, age)
age
[1] 40 30 35 60 50 32 25 39
add in middle
age [1:4]
[1] 40 30 35 60
age[5:8]
[1] 50 32 25 39
age = c(age [1:4], 45, age[5:8])
age
[1] 40 30 35 60 45 50 32 25 39
select a vector segment
age[3:5]
[1] 35 60 45
score[4:10]
[1] 70 85 90 78 NA NA NA
Remove element(both output and update)
age = age[-8]
age
[1] 40 30 35 60 45 50 32 39
update
score[4] = 80
score
[1] 100 90 60 80 85 90 78
conditional selection
age[age<50]
[1] 40 30 35 45 32 39
age[age<=50]
[1] 40 30 35 45 50 32 39
age[age>=50]
[1] 60 50
40<=age<=50
age_40_50 = age[age>=40 & age<=50]
age_40_50
[1] 40 45 50
Condition
result = score >= 80
result
[1] TRUE TRUE FALSE TRUE TRUE TRUE FALSE
Simple statistics
min(score)
[1] 60
max(score)
[1] 100
mean(score)
[1] 83.28571
median(score)
[1] 85
sum(score)
[1] 583
sd(score)
[1] 12.60574
var(score)
[1] 158.9048
quantile(score)
0% 25% 50% 75% 100%
60 79 85 90 100
Correlation
adding extra element in score to make age and score equal
score = c(score, 75)
score
[1] 100 90 60 80 85 90 78 75
cor(score, age)
[1] 0.1439659
Data Frame
data = data.frame(ID = c(1, 2, 3, 4, 5, 6, 7, 8),
name = c("A", "S", "P", "C", "B", "D", "F", "K"),
score = c(100, 90, 60, 80, 85, 90, 78, 75),
age = c(40, 30, 35, 60, 45, 50, 32, 39))
data
Select Column
data$score
[1] 100 90 60 80 85 90 78 75
data$age
[1] 40 30 35 60 45 50 32 39
any kind of Selection(row or column)
2nd row selection, all column selection
data[2, ]
2nd col select , all row select
data[ , 2]
[1] "A" "S" "P" "C" "B" "D" "F" "K"
element of each position(2ndrow &2nd col positon er
element)
data[2,2]
[1] "S"
multiple col selection(score &age col select)
data[ , c(3, 4)]
data[ , c(1,3, 4)]
want 2nd & 4th row with 1st,,3rd, 4th col
data[c(2,4) , c(1, 3, 4)]
Condition
all info of below 40 age students(condition on age col)
data[data$age<=40, ]
select students score greater than equal 80
data[data$score >= 80, ]
if do not want age col in above condition
data[data$score >= 80, c(1,2,3)]
select students with score >= 80 and age >= 30. Show only name
and score
data[data$score>=80 & data$age>=30, c(2,3)]
Ordering/ Sorting dataset
age ordering small to large number
data[order(data$age), ]
score ordering large to small/ decrease
data[order(data$score), decreasing = TRUE, ]
Error in `[.data.frame`(data, order(data$score), decreasing = TRUE, ) :
unused argument (decreasing = TRUE)
Add new col
dept = c("CS", "Bio", "Genetics", "Phy", "Chem","Math", "BBA","ELL")
data = cbind(data, dept)
data
Adding new rows
df9 = c(9, "Y", 62, 71, "EEE") #df means data frame
df10 = c(10, "Z", 68, 74, "Law")
data = rbind(df9,df10, data)
Warning: number of columns of result, 4, is not a multiple of vector length 5 of arg 1Warning: number of columns of result, 4, is not a multiple of vector length 5 of arg 2
data
Column Reorder
data[ , c(1,2,4,3)]
update Reorder in main data frame
data = data[ , c(1,2,4,3)]
data
Delete col(del 5th col)
data= data[ , c(1,2,3,4)]
data
Data summary
summary(data)
ID name
Min. :1.00 Length:8
1st Qu.:2.75 Class :character
Median :4.50 Mode :character
Mean :4.50
3rd Qu.:6.25
Max. :8.00
age score
Min. :30.00 Min. : 60.00
1st Qu.:34.25 1st Qu.: 77.25
Median :39.50 Median : 82.50
Mean :41.38 Mean : 82.25
3rd Qu.:46.25 3rd Qu.: 90.00
Max. :60.00 Max. :100.00
str(data)
'data.frame': 8 obs. of 4 variables:
$ ID : num 1 2 3 4 5 6 7 8
$ name : chr "A" "S" "P" "C" ...
$ age : num 40 30 35 60 45 50 32 39
$ score: num 100 90 60 80 85 90 78 75
Iris dataset
Iris dataset loading
iris = read.csv("iris.csv")
iris
str(iris)
'data.frame': 150 obs. of 5 variables:
$ sepal.length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ sepal.width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ petal.length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ petal.width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ variety : chr "Setosa" "Setosa" "Setosa" "Setosa" ...
summary(iris)
sepal.length sepal.width petal.length petal.width
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
Median :5.800 Median :3.000 Median :4.350 Median :1.300
Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
variety
Length:150
Class :character
Mode :character
Visualization
Scatter plot
library(ggplot2)
ggplot(iris, aes(x = sepal.length, y = sepal.width, color = variety)) + geom_point() + theme_minimal()

Boxplot
ggplot(iris, aes(y= sepal.length, x= variety,fill = variety))+ geom_boxplot()

Violin plot
ggplot(iris, aes(y= sepal.length, x= variety,fill = variety))+ geom_violin()

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQojIFZlY3RvcgpgYGB7cn0Kc2NvcmUgPSBjKDEwMCwgOTAsIDYwLCA3MCwgODUsIDkwKQphZ2UgPSBjKDMwLCAzNSwgNjAsIDUwLCAzMiwgMjUpCiMgc2VsZWN0CnNjb3JlWzNdCmFnZVs1XQphZ2VbMTBdCmBgYApgYGB7cn0KbGVuZ3RoKHNjb3JlKQpsZW5ndGgoYWdlKQpgYGAKCiMjIEFwcGVuZCBlbGVtZW50CiMgYWRkIGluIGVuZGluZwpgYGB7cn0KYWdlID0gYyhhZ2UsIDM5KQphZ2UKCnNjb3JlID0gYyhzY29yZSwgNzgpCnNjb3JlCmBgYAojIGFkZCBpbiBzdGFydGluZwpgYGB7cn0KYWdlID0gYyg0MCwgYWdlKQphZ2UKYGBgCgoKIyBhZGQgaW4gbWlkZGxlCmBgYHtyfQphZ2UgWzE6NF0KYWdlWzU6OF0KYWdlID0gYyhhZ2UgWzE6NF0sIDQ1LCBhZ2VbNTo4XSkKYWdlCmBgYAoKCiMjIHNlbGVjdCBhIHZlY3RvciBzZWdtZW50CmBgYHtyfQphZ2VbMzo1XQpzY29yZVs0OjEwXQpgYGAKIyMgUmVtb3ZlIGVsZW1lbnQoYm90aCBvdXRwdXQgYW5kIHVwZGF0ZSkKYGBge3J9CmFnZSA9IGFnZVstOF0KYWdlCgpgYGAKIyMgdXBkYXRlCmBgYHtyfQpzY29yZVs0XSA9IDgwCnNjb3JlCmBgYAoKIyMgY29uZGl0aW9uYWwgc2VsZWN0aW9uCmBgYHtyfQphZ2VbYWdlPDUwXQphZ2VbYWdlPD01MF0KYWdlW2FnZT49NTBdCmBgYAojIDQwPD1hZ2U8PTUwCmBgYHtyfQphZ2VfNDBfNTAgPSBhZ2VbYWdlPj00MCAmIGFnZTw9NTBdCmFnZV80MF81MApgYGAKCiMjIENvbmRpdGlvbgpgYGB7cn0KcmVzdWx0ID0gc2NvcmUgPj0gODAKcmVzdWx0CmBgYAojIyBTaW1wbGUgc3RhdGlzdGljcwpgYGB7cn0KbWluKHNjb3JlKQptYXgoc2NvcmUpCm1lYW4oc2NvcmUpCm1lZGlhbihzY29yZSkKc3VtKHNjb3JlKQpzZChzY29yZSkKdmFyKHNjb3JlKQpxdWFudGlsZShzY29yZSkKCmBgYAoKIyMgQ29ycmVsYXRpb24KIyBhZGRpbmcgZXh0cmEgZWxlbWVudCBpbiBzY29yZSB0byBtYWtlIGFnZSBhbmQgc2NvcmUgZXF1YWwKYGBge3J9CnNjb3JlID0gYyhzY29yZSwgNzUpCnNjb3JlCmBgYAoKYGBge3J9CmNvcihzY29yZSwgYWdlICkKYGBgCgojIyBEYXRhIEZyYW1lCmBgYHtyfQpkYXRhID0gZGF0YS5mcmFtZShJRCA9IGMoMSwgMiwgMywgNCwgNSwgNiwgNywgOCksIApuYW1lID0gYygiQSIsICJTIiwgIlAiLCAiQyIsICJCIiwgIkQiLCAiRiIsICJLIiksIApzY29yZSA9IGMoMTAwLCA5MCwgNjAsIDgwLCA4NSwgOTAsIDc4LCA3NSksIAphZ2UgPSBjKDQwLCAzMCwgMzUsIDYwLCA0NSwgNTAsIDMyLCAzOSkpCmRhdGEKYGBgCiMjIFNlbGVjdCBDb2x1bW4KYGBge3J9CmRhdGEkc2NvcmUKZGF0YSRhZ2UKYGBgCiMjIGFueSBraW5kIG9mIFNlbGVjdGlvbihyb3cgb3IgY29sdW1uKQojIDJuZCByb3cgc2VsZWN0aW9uLCBhbGwgY29sdW1uIHNlbGVjdGlvbgpgYGB7cn0KZGF0YVsyLCBdCmBgYAojIDJuZCBjb2wgc2VsZWN0ICwgYWxsIHJvdyBzZWxlY3QKYGBge3J9CmRhdGFbICwgMl0KYGBgCiMgZWxlbWVudCBvZiBlYWNoIHBvc2l0aW9uKDJuZHJvdyAmMm5kIGNvbCBwb3NpdG9uIGVyIGVsZW1lbnQpCmBgYHtyfQpkYXRhWzIsMl0KYGBgCiMgbXVsdGlwbGUgY29sIHNlbGVjdGlvbihzY29yZSAmYWdlIGNvbCBzZWxlY3QpCmBgYHtyfQpkYXRhWyAsIGMoMywgNCldCmBgYApgYGB7cn0KZGF0YVsgLCBjKDEsMywgNCldCmBgYAojIHdhbnQgMm5kICYgNHRoIHJvdyB3aXRoIDFzdCwsM3JkLCA0dGggY29sCmBgYHtyfQpkYXRhW2MoMiw0KSAsIGMoMSwgMywgNCldCmBgYAojIyBDb25kaXRpb24KIyBhbGwgaW5mbyBvZiBiZWxvdyA0MCBhZ2Ugc3R1ZGVudHMoY29uZGl0aW9uIG9uIGFnZSBjb2wpCmBgYHtyfQpkYXRhW2RhdGEkYWdlPD00MCwgXQpgYGAKIyBzZWxlY3Qgc3R1ZGVudHMgc2NvcmUgZ3JlYXRlciB0aGFuIGVxdWFsIDgwCmBgYHtyfQpkYXRhW2RhdGEkc2NvcmUgPj0gODAsIF0KYGBgCiMgaWYgZG8gbm90IHdhbnQgYWdlIGNvbCBpbiBhYm92ZSBjb25kaXRpb24KYGBge3J9CmRhdGFbZGF0YSRzY29yZSA+PSA4MCwgYygxLDIsMyldCmBgYAojIHNlbGVjdCBzdHVkZW50cyB3aXRoIHNjb3JlID49IDgwIGFuZCBhZ2UgPj0gMzAuIFNob3cgb25seSBuYW1lIGFuZCBzY29yZQpgYGB7cn0KZGF0YVtkYXRhJHNjb3JlPj04MCAmIGRhdGEkYWdlPj0zMCwgYygyLDMpXQpgYGAKIyBPcmRlcmluZy8gU29ydGluZyBkYXRhc2V0CiMjIGFnZSBvcmRlcmluZyBzbWFsbCB0byBsYXJnZSBudW1iZXIKYGBge3J9CmRhdGFbb3JkZXIoZGF0YSRhZ2UpLCBdCmBgYAojIyBzY29yZSBvcmRlcmluZyBsYXJnZSB0byBzbWFsbC8gZGVjcmVhc2UKYGBge3J9CmRhdGFbb3JkZXIoZGF0YSRzY29yZSksIGRlY3JlYXNpbmcgPSBUUlVFLCBdCmBgYAojIyBBZGQgbmV3IGNvbApgYGB7cn0KZGVwdCA9IGMoIkNTIiwgIkJpbyIsICJHZW5ldGljcyIsICJQaHkiLCAiQ2hlbSIsIk1hdGgiLCAiQkJBIiwiRUxMIikKZGF0YSA9IGNiaW5kKGRhdGEsIGRlcHQpI3JiaW5kIGZvciBhZGRpZyBuZXcgcm93CmRhdGEKYGBgCiMjIEFkZGluZyBuZXcgcm93cwpgYGB7cn0KZGY5ID0gYyg5LCAiWSIsIDYyLCA3MSwgIkVFRSIpICNkZiBtZWFucyBkYXRhIGZyYW1lCmRmMTAgPSBjKDEwLCAiWiIsIDY4LCA3NCwgIkxhdyIpCmRhdGEgPSByYmluZChkZjksZGYxMCwgZGF0YSkKZGF0YQpgYGAKCgojIyBDb2x1bW4gUmVvcmRlcgpgYGB7cn0KZGF0YVsgLCBjKDEsMiw0LDMpXQpgYGAKIyMgdXBkYXRlIFJlb3JkZXIgaW4gbWFpbiBkYXRhIGZyYW1lCmBgYHtyfQpkYXRhID0gZGF0YVsgLCBjKDEsMiw0LDMpXQpkYXRhCmBgYAojIyBEZWxldGUgY29sKGRlbCA1dGggY29sKQpgYGB7cn0KZGF0YT0gZGF0YVsgLCBjKDEsMiwzLDQpXQpkYXRhCmBgYAojIyBEYXRhIHN1bW1hcnkKYGBge3J9CnN1bW1hcnkoZGF0YSkKYGBgCmBgYHtyfQpzdHIoZGF0YSkKYGBgCgojIyBJcmlzIGRhdGFzZXQKIyBJcmlzIGRhdGFzZXQgbG9hZGluZwpgYGB7cn0KaXJpcyA9IHJlYWQuY3N2KCJpcmlzLmNzdiIpCmlyaXMKYGBgCmBgYHtyfQpzdHIoaXJpcykKYGBgCmBgYHtyfQpzdW1tYXJ5KGlyaXMpCmBgYAojIyMgVmlzdWFsaXphdGlvbgojIyBTY2F0dGVyIHBsb3QKYGBge3J9CmxpYnJhcnkoZ2dwbG90MikKZ2dwbG90KGlyaXMsIGFlcyh4ID0gc2VwYWwubGVuZ3RoLCB5ID0gc2VwYWwud2lkdGgsIGNvbG9yID0gdmFyaWV0eSkpICsgZ2VvbV9wb2ludCgpICsgdGhlbWVfbWluaW1hbCgpCmBgYAojIyBCb3hwbG90CmBgYHtyfQpnZ3Bsb3QoaXJpcywgYWVzKHk9IHNlcGFsLmxlbmd0aCwgeD0gdmFyaWV0eSxmaWxsID0gdmFyaWV0eSkpKyBnZW9tX2JveHBsb3QoKQpgYGAKCiMjIFZpb2xpbiBwbG90CmBgYHtyfQpnZ3Bsb3QoaXJpcywgYWVzKHk9IHNlcGFsLmxlbmd0aCwgeD0gdmFyaWV0eSxmaWxsID0gdmFyaWV0eSkpKyBnZW9tX3Zpb2xpbigpCmBgYAoKCg==