Subsetting & Sorting

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.