对包含相同信息的行求和并删除其余部分



我有一个特定的R数据帧问题,我还没有找到解决方案。

我有一个具有相同信息(重复或 Id1/Id2 组合(的数据框,如下所示:

df_test <- data.frame(Id1= c("1", "1", "2", "3", "11", "5", "6", "7"),
Id2= c("4", "4", "6", "11", "3", "6", "2", "9" ))
df_test
Id1 Id2
1   1   4
2   1   4
3   2   6
4   3  11
5  11   3
6   5   6
7   6   2
8   7   9

我想要实现的是一个数据框,在单独的列中计算所有重复和相同的信息行,并且每个行只保留一行。挑战在于不仅要"识别重复项",还要识别相同的 Id1/Id2 组合。如下所示:

df_sol
Id1 Id2 Sum
1   1   4   2
2   2   6   2
3   3  11   2
4   5   6   1
5   7   9   1

我已经尝试了aggregatesummarise,但在那里我找不到解决方案。另一个想法是使用igraph包并将其视为edgelist然后edge.attr.comb = list(weight= "sum")

提前致谢

#dataframe for solution:  
df_sol <- data.frame(Id1= c("1", "2", "3", "5", "7"),
Id2= c("4", "6", "11", "6", "9" ),
Sum =c("2", "2", "2", "1", "1"))

你可以用这个,排序行1st,顺序和你的输出不同,原因,在你df_test数据类型都是字符。将其更改为数字,您将获得所需的结果(

A=data.frame(t(apply(df_test, 1, sort)))
A=dplyr::count(A,X1,X2)
names(A)=c('Id1','Id2','Sum')
# A tibble: 5 x 3
Id1    Id2   Sum
<fctr> <fctr> <int>
1      1      4     2
2     11      3     2
3      2      6     2
4      5      6     1
5      7      9     1

最新更新