假设我有一个矩阵(或数据帧):
1 5 8
3 4 9
3 9 6
6 9 3
3 1 2
4 7 2
3 8 6
3 2 7
Run Code Online (Sandbox Code Playgroud)
我想只选择前三行作为第一个条目,如下所示:
3 4 9
3 9 6
3 1 2
Run Code Online (Sandbox Code Playgroud)
我很清楚如何拉出以"3"开头的所有行,并且很清楚如何拉出以"3"开头的第一行.
但一般来说,如何提取以"3"开头的前n行?
此外,我如何只选择第3和第4次出现,如下所示:
3 1 2
3 8 6
Run Code Online (Sandbox Code Playgroud)
无需额外包装:
mydf[mydf$V1==3,][1:3,]
Run Code Online (Sandbox Code Playgroud)
结果是:
V1 V2 V3
2 3 4 9
3 3 9 6
5 3 1 2
Run Code Online (Sandbox Code Playgroud)
当你需要第三和第四行时:
mydf[mydf$V1==3,][3:4,]
# or:
mydf[mydf$V1==3,][c(3,4),]
Run Code Online (Sandbox Code Playgroud)
使用数据:
mydf <- structure(list(V1 = c(1L, 3L, 3L, 6L, 3L, 4L, 3L, 3L),
V2 = c(5L, 4L, 9L, 9L, 1L, 7L, 8L, 2L),
V3 = c(8L, 9L, 6L, 3L, 2L, 2L, 6L, 7L)),
.Names = c("V1", "V2", "V3"), class = "data.frame", row.names = c(NA, -8L))
Run Code Online (Sandbox Code Playgroud)
额外材料:此外dplyr,您还可以非常有效地执行此操作data.table(请参阅此答案,以便针对不同data.table方法对大型数据集进行速度比较):
setDT(mydf)[V1==3, head(.SD,3)]
# or:
setDT(mydf)[V1==3, .SD[1:3]]
Run Code Online (Sandbox Code Playgroud)