如何从R中的数据集中提取非连续行?

时间:2012-12-11 09:25:03

标签: r dataframe

我有5列-1000 +行数据,我从这个数据中提取了特定列表,基于“学生”,它变化1到13,现在我应该简化这些列表。 我想从这些数据中提取非连续的行,例如,23日,31日,38日。 我怎么能这样做?

由于

         School Time      Student   Classroom  Note
 23          1  212           1      2           22
 30          1  256           2      2           21
 31          1  257           3      2           27
 37          1  267           4      2           45
 38          1  269           5      2           14
 43          1  276           6      2           42
 44          1  278           7      2           13
 47          1  285           8      2           11

2 个答案:

答案 0 :(得分:2)

这是一种选择所有行的方法,其中(数字)rowname与后续行的rowname之间的差异大于1:

 dat <- read.table(text = "School Time      Student   Classroom  Note
 23          1  212           1      2           22
 30          1  256           2      2           21
 31          1  257           3      2           27
 37          1  267           4      2           45
 38          1  269           5      2           14
 43          1  276           6      2           42
 44          1  278           7      2           13
 47          1  285           8      2           11", header = TRUE)


dat[c(diff(as.numeric(rownames(dat))) > 1, TRUE), ]

注意的。这也选择了最后一行(47)。如果您要排除最后一行,请将TRUE替换为FALSE

结果:

   School Time Student Classroom Note
23      1  212       1         2   22
31      1  257       3         2   27
38      1  269       5         2   14
44      1  278       7         2   13
47      1  285       8         2   11

答案 1 :(得分:0)

i <- 3

DF2 <- DF[seq(from=i, to=nrow(DF), by=4),]

提取第3行,然后提取3 + 4 = 7th,7 + 4 = 11th,11 + 4 = 15,依此类推......