我试图找到“组”(id3
)基于两个变量(id1
, id2
):
df = data.frame(id1 = c(1,1,2,2,3,3,4,4,5,5),
id2 = c('a','b','a','c','c','d','x','y','y','z'),
id3 = c(rep('group1',6), rep('group2',4)))
id1 id2 id3
1 1 a group1
2 1 b group1
3 2 a group1
4 2 c group1
5 3 c group1
6 3 d group1
7 4 x group2
8 4 y group2
9 5 y group2
10 5 z group2
例如id1=1
与a
and b
of id2
. But id1=2
也与a
所以两者都属于一个组(id3=group1
)。但是由于id1=2
and id1=3
share id2=c
, also id1=3
属于该组(id3=1
)。元组的值((1,2),('a','b','c'))
没有出现在其他地方,因此没有其他行属于该组(标记为group1
一般而言)。
如果你需要照顾NA
s,检查这个类似的帖子 https://stackoverflow.com/questions/67331014/r-find-groups-of-tupples-ignoring-nas
我的想法是创建一个基于id3
随后将在循环中填充。
solution = data.frame(id3= c('group1', 'group2'),id1=NA, id2=NA)
group= 1
for (step in c(1:1000)) { # run many steps to make sure to get all values
solution$id1[group] = # populate
solution$id2[group] = # populate
if (fully populated) {
group = group +1
}}
我正在努力了解如何填充。
免责声明:我问过类似的问题here https://stackoverflow.com/questions/54691062/how-to-find-unique-identifiers-by-fuzzy-string-variables?noredirect=1#comment96170733_54691062,但使用名称id2
导致很多人向我指出 R 中的模糊字符串过程,这里不需要这些过程,因为存在精确的解决方案。我还在这篇文章中包含了从那时起我尝试过的所有代码。