假设我有以下数据集
1 2 3 4
4 5 6 7
2 3 4 6
3 4 5 6
9 4 8 6
4 4 5 6
3 2 1 5
4 3 2 1
9 9 8 8
.
.
.
现在我要使用这些行:
1 2 3 4
9 4 8 6
9 9 8 8
.
.
.
换句话说,我排第一行,然后错过三排,第四排又错过了三排,第七排,然后...
答案 0 :(得分:3)
我们可以使用:
df[seq(1,nrow(df),4),]
V1 V2 V3 V4
1 1 2 3 4
5 9 4 8 6
9 9 9 8 8
数据:
df<-structure(list(V1 = c(1L, 4L, 2L, 3L, 9L, 4L, 3L, 4L, 9L), V2 = c(2L,
5L, 3L, 4L, 4L, 4L, 2L, 3L, 9L), V3 = c(3L, 6L, 4L, 5L, 8L, 5L,
1L, 2L, 8L), V4 = c(4L, 7L, 6L, 6L, 6L, 6L, 5L, 1L, 8L)), class = "data.frame", row.names = c(NA,
-9L))
答案 1 :(得分:1)
我们可以创建一个自定义分组变量,并获取每个组的第一个条目。 tidyverse
中的解决方案是
library(dplyr)
df %>%
group_by(grp = c(0, rep(1:(n() - 1) %/% 4))) %>%
slice(1L)
给出,
# A tibble: 3 x 5 # Groups: grp [3] V1 V2 V3 V4 grp <int> <int> <int> <int> <dbl> 1 1 2 3 4 0 2 9 4 8 6 1 3 9 9 8 8 2
答案 2 :(得分:1)
另一个解决方案是
df[1:nrow(df) %% 4 == 1, ]
V1 V2 V3 V4
1 1 2 3 4
5 9 4 8 6
9 9 9 8 8
答案 3 :(得分:1)
另一种dplyr
可能性是:
df %>%
slice(which(row_number() %% 4 == 1))
V1 V2 V3 V4
1 1 2 3 4
2 9 4 8 6
3 9 9 8 8