因此,目的是通过距离比较每个ID与彼此的ID。
考虑以下数据框Df
ID AN AW
a white green
b black yellow
c purple gray
d white gray
为了比较我需要一个如下所示的组合:
ID AN AW ID2 AN2 AW2
a white green b black yellow
a white green c purple gray
a white green d white gray
b black yellow c purple gray
b black yellow d white gray
c purple gray d white gray
基本上我试图实现所有组合,以便在属于每个ID的特征之间取得距离。
我现在真的不知道如何开始。任何见解? R我可以使用哪些工具?
答案 0 :(得分:4)
使用combn和match的一种可能的解决方案。
ids <- combn(unique(df$ID), 2)
data.frame(df[match(ids[1,], df$ID), ], df[match(ids[2,], df$ID), ])
# ID AN AW ID.1 AN.1 AW.1
# 1 a white green b black yellow
# 1.1 a white green c purple gray
# 1.2 a white green d white gray
# 2 b black yellow c purple gray
# 2.1 b black yellow d white gray
# 3 c purple gray d white gray