【发布时间】:2020-03-30 07:52:42
【问题描述】:
考虑以下由列名“id”和“x”组成的数据框,其中每个 id 重复四次。数据如下:
df<-data.frame("id"=c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4),
"x"=c(2,2,1,1,2,3,3,3,1,2,2,3,2,2,3,3))
问题是关于如何按以下标准对数据框进行子集化:
(1) 保留每个 id 的所有条目,如果它在 x 列中的对应值不包含 3 或它的最后一个数字为 3。
(2) 对于在 x 列中具有多个 3 的给定 id,将所有数字保留到前 3 并删除剩余的 3。预期的输出如下所示:
id x
1 1 2
2 1 2
3 1 1
4 1 1
5 2 2
6 2 3
7 3 1
8 3 2
9 3 2
10 3 3
11 4 2
12 4 2
13 4 3
我熟悉使用 dplyr 包中的“过滤器”功能来对数据进行子集化,但由于上述标准的复杂性,这种特殊情况让我感到困惑。对此的任何帮助将不胜感激。
【问题讨论】: