我有以下df
var1 var2 Freq
1 a b 10
2 b a 5
3 b d 10
从
创建help <- data.frame(var1 = c("a", "b", "b"), var2 = c("b", "a", "d"), Freq = c(10, 5, 10))
ab相关与ba相同,我希望将它们组合成一行,看起来像
var1 var2 Freq
1 a b 15
2 b d 10
有什么想法吗?
答案 0 :(得分:2)
这是一种方式:
setNames(aggregate(help$Freq, as.data.frame(t(apply(help[-3], 1, sort))), sum),
names(help))
# var1 var2 Freq
# 1 a b 15
# 2 b d 10
答案 1 :(得分:0)
在基地R:
do.call(rbind,
by(dat,rowSums(sapply(dat[,c("var1","var2")],as.integer)),
function(x)data.frame(x[1,c("var1","var2")],
Freq= sum(x[,"Freq"]))))
var1 var2 Freq
3 a b 15
5 b d 10
我首先通过对列的整数表示求和来创建分组变量。然后按组执行频率之和。最后绑定结果以获取新的data.frame。