合并包含相同信息的行并删除其余行

3

我有一个特定的 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"))

1个回答

5

您可以使用这个工具,将行首进行排序,但是排序结果与您的输出不同,因为在您的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

2
智能解决方案,甚至可以轻松扩展到更多列! - Robin Gertenbach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接