假设我有一个矩阵(或数据帧):
1 5 8
3 4 9
3 9 6
6 9 3
3 1 2
4 7 2
3 8 6
3 2 7
我想只选择前三行作为第一个条目,如下所示:
3 4 9
3 9 6
3 1 2
我很清楚如何拉出所有以“3”开头的行,并且很清楚如何拉出以“3”开头的第一行。
但总的来说,如何提取以“3”开头的前n行?
此外,我如何只选择第3和第4次出现,如下所示:
3 1 2
3 8 6
答案 0 :(得分:5)
无需额外的包裹:
mydf[mydf$V1==3,][1:3,]
结果:
V1 V2 V3
2 3 4 9
3 3 9 6
5 3 1 2
当你需要第三和第四行时:
mydf[mydf$V1==3,][3:4,]
# or:
mydf[mydf$V1==3,][c(3,4),]
使用过的数据:
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))
奖励材料:除了dplyr
之外,您还可以使用data.table
(see this answer非常有效地执行此操作,以便对不同data.table
方法的大型数据集进行速度比较:< / p>
setDT(mydf)[V1==3, head(.SD,3)]
# or:
setDT(mydf)[V1==3, .SD[1:3]]
答案 1 :(得分:2)
您可以使用dplyr执行类似的操作,以提取该列的每个唯一值的前三行:
library(dplyr)
df %>% arrange(columnName) %>% group_by(columnName) %>% slice(1:3)
如果您想在该列的值中仅提取三行,则可以尝试:
df %>% filter(columnName == 3) %>% slice(1:3)
如果您想要特定的行,您可以提供切片为c(3, 4)
,例如。
答案 2 :(得分:1)
我们也可以使用URL
...searchModel.MinPrice=₹2%2C189%2C090.00&searchModel.MaxPrice=₹5%2C772%2C480.00
如果我们还需要在subset
,
head(subset(mydf, V1==3),3)