Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Subset data using non-sequential row numbers

Tags:

dataframe

r

I have a data frame with 30 rows and 100 columns (X).

I would like to create a new data frame (Y) with specific rows from the larger data frame.

For example, I would like data frame (Y) to contain rows 1 through 5, 10 through 14, and 20.

I know that I can use the code:

Y<-X[1:5,]

and obtain the first five rows, but I cannot work out a similar code to obtain rows 1:5, 10:14, and 20.

like image 436
Steve Weitz Avatar asked Nov 30 '11 01:11

Steve Weitz


1 Answers

Generally, when selecting rows in a data frame or matrix, one uses the familiar X[rows, cols] format. It's helpful to remember that both of the parameters can be generated not simply as simple numbers or sequences, but also through the concatenation of numbers and sequences. Therefore, for your problem you can use something like the following:

Y <- X[c(1:5, 10:14, 20), ]

This will select rows 1 through 5, rows 10 through 14, and row 20, together with all of the columns in X, and assign the result to Y.

like image 71
pmcs Avatar answered Oct 01 '22 23:10

pmcs