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==