背景:我正在使用原始目标数据。我想计算每对城市之间的比例流量。但是,我发现很难通过每对城市汇总数据,因为这些对涉及列条目的排列。我可以通过使用大量for循环和条件的强力来做到这一点,但这需要太长时间来计算。
具体地 给出以下形式的矩阵:
Origin Destination Flow
a b f1
b a f2
c d f3
d c f4
我想计算聚合
Pair Flow
a,b f1+f2
c,d f3+f4
我尝试通过反转原点 - 目标列,附加到原始数据集,按原点和目标列聚合,使用xtabs创建对称矩阵,然后仅获取上三角形来实现此目的。但是,这看起来并没有正常工作。
答案 0 :(得分:2)
这是一个解决方案:
library(dplyr)
df$pair <- ifelse(df$Destination < df$Origin,
paste(df$Destination, df$Origin, sep = ','),
paste(df$Origin, df$Destination, sep = ','))
df %>% group_by(pair) %>% summarise(Flow = paste(Flow, collapse = ' + '))
Source: local data frame [2 x 2]
pair Flow
(chr) (chr)
1 a,b f1 + f2
2 c,d f3 + f4
Flow列显然是使用字符向量粘贴的,因为这就是你给出的。如果您有数字值,可以修改为sum(Flow)
。
编辑:对不起,早些时候,我总结了错误的专栏。固定的。