【发布时间】:2015-03-09 09:35:11
【问题描述】:
a <- c("A","A","A","B","B","B","C","C","C","C","D","D","D","D","D")
b <- c("x","y","z","x","x","z","y","z","z","z","y","z","z","z","x")
df = data.frame(a,b)
a b
1 A x
2 A y
3 A z
4 B x
5 B x
6 B z
7 C y
8 C z
9 C z
10 C z
11 D y
12 D z
13 D z
14 D z
15 D x
对于每个组 A、B、C、D,每当组合 y,z 出现在组的末尾时,我想删除 b 列中的值 z。
如果我们有 a=="C" 的情况,其中 b 值为 y,z,z,z,我想删除所有 z。然而,在 a=="D" 中,没有任何改变,因为 x 是最后一个值。
结果如下所示:
a b
1 A x
2 A y
4 B x
5 B x
6 B z
7 C y
11 D y
12 D z
13 D z
14 D z
15 D x
通过在dplyr 中进行分组,我可以识别出每个值在A 中的最后一次出现,因此a=="A" 中描述的基本情况没有问题。我很难为a=="C" 的情况找到解决方案,我可能会出现一次 y,然后出现 20 次 z。
【问题讨论】: