数据表中变量的唯一组合的总和

Mar*_*arc 1 r data.table

我有一个数据表,其格式代表了许多关系类别的国家之间的关系强度:

Country1    Country2     Value     Category
A           A            4         1
A           B            2         1
A           C            9         1
B           A            3         2
B           D            4         1
C           A            2         2
D           C            7         2
...
Run Code Online (Sandbox Code Playgroud)

现在我想总结每个类别的所有相互关系(例如AB和BA; DC和CD等......)(AB和BA需要"合并").

什么可以是一个简洁和"非常R"的解决方案呢?有没有现成的功能可以做到这一点?

现在,我已经为"Country1"和"Country2"列设置了一个键,但是没有找到我接下来要匹配相应行的内容.

谢谢你的任何线索.

Aru*_*run 7

使用pminpmax..

require(data.table) # v1.9.6
dt = fread("Country1    Country2     Value     Category
A           A            4         1
A           B            2         1
A           C            9         1
B           A            3         2
B           D            4         1
C           A            2         2
D           C            7         2")
dt[, .(total = sum(Value)), 
     by=.(Country1 = pmin(Country1, Country2), 
          Country2 = pmax(Country1, Country2))]
#    Country1 Country2 total
# 1:        A        A     4
# 2:        A        B     5
# 3:        A        C    11
# 4:        B        D     4
# 5:        C        D     7
Run Code Online (Sandbox Code Playgroud)

如果你想要这个Category,只需添加它by.