r - 尝试在两列中保留非重复值时如何在R中使用数据框的条件过滤
问题描述
我有一个这样组织的数据框:
df <- data.frame(ID=c(rep("1111", 16),rep("2222", 16)),
subID=rep(c(rep("100", 4), rep("200", 4), rep("300", 4), rep("400", 4)),2),
instance=rep(1:4, 8),
feature=rep(letters[1:4], 8)
)
看起来像这样:
> df
ID subID instance feature
1 1111 100 1 a
2 1111 100 2 b
3 1111 100 3 c
4 1111 100 4 d
5 1111 200 1 a
6 1111 200 2 b
7 1111 200 3 c
8 1111 200 4 d
9 1111 300 1 a
10 1111 300 2 b
11 1111 300 3 c
12 1111 300 4 d
13 1111 400 1 a
14 1111 400 2 b
15 1111 400 3 c
16 1111 400 4 d
17 2222 100 1 a
18 2222 100 2 b
19 2222 100 3 c
20 2222 100 4 d
21 2222 200 1 a
22 2222 200 2 b
23 2222 200 3 c
24 2222 200 4 d
25 2222 300 1 a
26 2222 300 2 b
27 2222 300 3 c
28 2222 300 4 d
29 2222 400 1 a
30 2222 400 2 b
31 2222 400 3 c
32 2222 400 4 d
在真实数据集中,所有的 subID 都是从同一个 ID 采集的唯一样本。您可以将它们视为在同一位置的四个时间点收集的样本。子 ID 100 到 400 每个都与 4 个实例之一相关联(即 100 = 2、200 = 4、300 = 3 和 400 = 1),并且对于整体 ID 是唯一的。但我不知道实际的链接,需要进行手动记录审查以分配链接。为了让我的审查更快,我想保留每个 subID 和每个实例之一,如下所示:
ID subID instance feature truesubID
1 1111 100 1 a
2 1111 200 2 b
3 1111 300 3 c
4 1111 400 4 d
5 2222 100 1 a
6 2222 200 2 b
7 2222 300 3 c
8 2222 400 4 d
这样,当我进行手动记录审查时,我知道可能的 subID 编号是什么,它们属于哪个 ID,并且我知道要交叉引用多少个实例。然后我会将真实的 subID 填写到最后一列。(例如,对于 ID=1111,subID=100 实际上是 instance=4,等等)
你知道我如何过滤第一个df看起来像第二个吗?
谢谢!
解决方案
推荐阅读
- javascript - 在 for-of 循环中使用 entries(),遍历 HTMLCollection
- php - 无法使用 PSR4 在 PHPUnit 测试中使用命名空间
- vue.js - 在传单地理搜索中更改标记时出错
- html - 无法在 HTML 网页上进一步向下滚动
- java - 将 JList 线程与另一个类的线程同步
- javascript - 如何使用 Ajax 运行 php 脚本(不返回)
- javascript - codeql CLI lgtm.yml:如何自定义 javascript 提取?
- html - 奇怪的方块
- php - Laravel,如何在 foreach 循环中查看数组
- amazon-web-services - 触发具有多个必需源的 Lambda 函数