【发布时间】:2020-11-22 06:13:16
【问题描述】:
您好,我有一个包含名称和一些数字的数据框。 “t1”列中的数字对于每个人来说应该是唯一的,但在某些情况下它们不是。所以我想找到那些“t1”列中的一个数字对应于两个不同的人的行,以便我可以从我的数据框中删除这些数据以供将来分析。
这是一些看起来像我的原始数据的玩具数据:
name t1 t2 t3
1 John Doe 1 a a
2 Doe John 1 a a
3 John Doe A 1 b b
4 David Freeman 2 b b
5 Freeman David 2 b b
6 Jack Chen 3 b b
7 John Chen 3 b b
8 Chris Baker F 4 b b
9 Baker O Chris 4 b b
>
这是所需的输出:
name t1
1 Jack Chen 3
2 John Chen 3
3 Chris Baker F 4
4 Baker O Chris 4
以下是我得到的代码和输出:
bio_share_id <- bio %>%
distinct(name, t1, .keep_all = T) %>%
group_by(t1) %>%
filter(n() > 1) %>%
ungroup() %>%
select(c(name,t1))
name t1
<chr> <chr>
1 John Doe 1
2 Doe John 1
3 John Doe A 1
4 David Freeman 2
5 Freeman David 2
6 Jack Chen 3
7 John Chen 3
8 Chris Baker F 4
9 Baker O Chris 4
如您所见,只要名称格式有一些变化,我的代码就会将每个名称读取为唯一变量。它将 John Doe、Doe John 和 John Doe A 解读为不同的人,但我希望将它们解读为一个人。
由于我拥有的原始数据如此之大,我无法手动修复名称,因此我想找到一种使用 R 清理这些名称的方法。John Doe、Doe John 和 John Doe A 应该被视为一个个人,但 Chris Baker F 和 Bake O Chris 应该被视为两个不同的独特个体。
提前致谢!
【问题讨论】:
-
是
"Jone Doe A"还是"John Doe A"? -
对不起,我是 John Doe A!我会编辑