【发布时间】:2020-07-06 07:11:42
【问题描述】:
假设我们有以下数据集,其中V2 中的值按组升序排列V1:
Input =(" V1 V2
1 A 3
2 A 4
3 A 5
4 A 6
5 A 12
6 A 13
7 B 4
8 B 5
9 B 6
10 B 12
11 C 13
12 C 14
13 C 18")
df = as.data.frame(read.table(textConnection(Input), header = T, row.names = 1))
现在我想保留连续行之间的差异为<= 1 的行,所以我想要的输出:
V1 V2
1 A 3
2 A 4
3 A 5
4 A 6
5 A 12
6 A 13
7 B 4
8 B 5
9 B 6
11 C 13
12 C 14
但是当我使用时:
df %>%
group_by(V1) %>%
filter(c(0,diff(V2)) <= 1)
我有:
V1 V2
1 A 3
2 A 4
3 A 5
4 A 6
5 A 13
6 B 4
7 B 5
8 B 6
9 C 13
10 C 14
缺少V2 值为 12 的行,它应该在数据集中。我也试过lag(),但结果是一样的。
df %>%
group_by(V1) %>%
filter(V2 - lag(V2) <= 1 | is.na(V2 - lag(V2)))
你能指出我的错误吗?
【问题讨论】:
-
为什么要保留第5行?
-
第 5 行和第 6 行的差为 1