问题描述
我有一个数据框,其中包含许多变量和观察值的百分比值,如下所示:
obs <- data.frame(Site = c("A","B","C"),X = c(11,22,33),Y = c(44,55,66),Z = c(77,88,99))
我需要将此数据准备为网络分析的边缘列表,以“站点”作为节点,其余变量作为边缘。结果应如下所示:
Node1 Node2 Weight Type
A B 33 X
A C 44 X
...
B C 187 Z
因此,对于“ Weight”,我们要计算所有可能的对的总和,并分别针对每一列(以“ Type”结尾)进行计算。
我想答案是必须在apply
表达式上使用combn
,就像这里的Applying combn() function to data frame一样,但是我还不能完全解决。
我可以手工完成“网站”的组合
sites <- combn(obs$Site,2)
然后像这样的各个列
combA <- combn(obs$A,2,function(x) sum(x)
并将这些数据集绑定在一起,但这显然很快变得很烦人。
我试图一次完成所有变量列
b <- apply(newdf[,-1],1,function(x){
sum(utils::combn(x,2))
}
)
但是这有点问题。 有人可以帮忙吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)