总和和顺序列

Sum and order columns

我有一个大型数据集想要简化,但我目前在处理一件事时遇到了一些麻烦。 下面的 table 显示了一个起点终点组合。计数列,例如表示A到B的出现次数。

From    To  count
A       B     2
A       C     1
C       A     3
B       C     1

我遇到的问题是,例如 A 到 C (1),实际上与 C 到 A (3) 相同。因为方向对我来说并不重要,只是 A 和 C 之间有联系,我想知道我怎么能简单地让 A 到 C (4)。

问题是我有一个400级的因素,所以我不能手动做。有什么 dplyr 或类似的东西可以为我解决这个问题吗?

这是使用 aggregatesortpastemapply 的基础 R 方法。

with(df, aggregate(count,
                   list(route=mapply(function(x, y) paste(sort(c(x, y)), collapse=" - "),
                                                          From, To)), sum))
  route x
1 A - B 2
2 A - C 4
3 B - C 1

此处,mapply 从 from 和 to 变量中获取成对的元素,对它们进行排序并将它们粘贴到一个 collapse=T​​RUE 的字符串中。生成的字符串向量在 aggregate 中用于对观察值进行分组并对计数值求和。 with 减少打字。

df[1:2] <- t(apply(df[1:2], 1, sort))

aggregate(count ~ From + To, df, sum)

结果:

  From To count
1    A  B     2
2    A  C     4
3    B  C     1