gpt4 book ai didi

r - 使加权边缘列表像对 R 中的数据框

转载 作者:行者123 更新时间:2023-12-01 08:13:36 25 4
gpt4 key购买 nike

我有一个包含三列的数据集。

X = c("x", "y", "z", "x", "y", "w")
Y = c("a", "b", "c" , "b", "a", "c")
set.seed(3)
Z = sample(10,6)
dat = data.frame(X, Y, Z)

数据看起来像
 X Y Z
1 x a 2
2 y b 8
3 z c 4
4 x b 3
5 y a 9
6 w c 6

我想将上述数据转换为行为 X 列为 Y 且矩阵中的值为 Z 的格式。 基本上我想要以下内容:
    a   b    c
x 2 3 0
y 9 8 0
z 0 0 4
w 0 0 6

这有点类似于边列表到邻接矩阵,除了数据矩阵不是方阵。请帮忙。谢谢!

最佳答案

尝试

library(reshape2)
acast(dat, X~Y, value.var='Z', fill=0)

按照预期结果按顺序获取行
acast(dat, factor(X, levels=unique(X))~Y, value.var='Z', fill=0)

或者正如@thelatemail 评论的那样
xtabs(Z~X+Y, data= dat)[unique(dat$X),]

或者如果两列都不按顺序排列的修改版本
with(dat, xtabs(Z ~ X + Y)[unique(X), unique(Y)])

关于r - 使加权边缘列表像对 R 中的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30635549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com