1

我有一个 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
4

2 回答 2

2

这是一种选择(数字)行名与后续行的行名之间的差异大于一个的所有行的方法:

 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)。如果要排除最后一行,请替换TRUEFALSE.

结果:

   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
于 2012-12-11T10:37:55.013 回答
0
i <- 3

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

提取第 3 行,接下来提取 3+4=7th、7+4=11th、11+4=15th,依此类推....

于 2014-07-09T10:08:32.000 回答