set.seed(13435)
#create a data frame with three variables
X <- data.frame("var1"=sample(1:5), "var2"=sample(6:10), "var3"=sample(11:15))
#scramble the data frame & add missing numbers
X <- X[sample(1:5),]; X$var2[c(1,3)] = NA
X
## var1 var2 var3
## 5 2 NA 11
## 4 4 10 12
## 1 3 NA 14
## 2 1 7 15
## 3 5 6 13
#simple row, column subset
X[1:3, "var3"]
## [1] 11 12 14
# subset with logical satements
X[(X$var1 <=3 | X$var3 >15),]
## var1 var2 var3
## 5 2 NA 11
## 1 3 NA 14
## 2 1 7 15
#which() function determines the position of elements in a logical vector that are TRUE.
X[which(X$var1 <3),]
## var1 var2 var3
## 5 2 NA 11
## 2 1 7 15
# spot rows with NAs
X[(which(X$var1 >0) & (X$var2 >0) & (X$var3 >0)), ]
## var1 var2 var3
## NA NA NA NA
## 4 4 10 12
## NA.1 NA NA NA
## 2 1 7 15
## 3 5 6 13
# sort & put NAs at the end
sort(X$var2, na.last = TRUE)
## [1] 6 7 10 NA NA
#sort with plyr
library(plyr)
arrange(X,var1)
## var1 var2 var3
## 1 1 7 15
## 2 2 NA 11
## 3 3 NA 14
## 4 4 10 12
## 5 5 6 13
#add rows & columns
X$var4 <-rnorm(5)
X
## var1 var2 var3 var4
## 5 2 NA 11 -0.4150458
## 4 4 10 12 2.5437602
## 1 3 NA 14 1.5545298
## 2 1 7 15 -0.6192328
## 3 5 6 13 -0.9261035
Y <- cbind(X,rnorm(5) )
Y
## var1 var2 var3 var4 rnorm(5)
## 5 2 NA 11 -0.4150458 -0.66549949
## 4 4 10 12 2.5437602 -0.02166735
## 1 3 NA 14 1.5545298 -0.17411953
## 2 1 7 15 -0.6192328 0.23900438
## 3 5 6 13 -0.9261035 -1.83245959
# top or bottom bind rows
Top <- rbind(rnorm(5), X )
Top
## var1 var2 var3 var4
## 1 -0.03718739 -0.440517 -1.448264 -0.5182457
## 5 2.00000000 NA 11.000000 -0.4150458
## 4 4.00000000 10.000000 12.000000 2.5437602
## 11 3.00000000 NA 14.000000 1.5545298
## 2 1.00000000 7.000000 15.000000 -0.6192328
## 3 5.00000000 6.000000 13.000000 -0.9261035
Bottom <- rbind(X,rnorm(5) )
Bottom
## var1 var2 var3 var4
## 5 2.0000000 NA 11.0000000 -0.4150458
## 4 4.0000000 10.00000 12.0000000 2.5437602
## 1 3.0000000 NA 14.0000000 1.5545298
## 2 1.0000000 7.00000 15.0000000 -0.6192328
## 3 5.0000000 6.00000 13.0000000 -0.9261035
## 6 0.2849353 -1.53784 -0.3652188 -0.4338298
This is an R Markdown document, feel free to reach out for finer details.