我的数据框格式如下:
name workplace
a A
b B
c A
d C
e D
....
我想将此数据框转换为R中的联属网络,格式为
A B C D ...
a 1 0 0 0
b 0 1 0 0
c 1 0 0 0
d 0 0 1 0
e 0 0 0 1
...
我使用了以下程序:
for (i in 1:nrow(A1)) {
a1[rownames(a1) == A1$name[i],
colnames(a1) == A1$workplace[i]] <- 1
}
其中A1是数据框,a1是隶属网络。但是,由于我有一个大数据帧,上面的程序运行速度很慢。有没有一种有效的方法可以避免循环数据转换?
非常感谢!
答案 0 :(得分:3)
如果您的数据df
只是执行:
as.data.frame.matrix(table(df))
# A B C D
# a 1 0 0 0
# b 0 1 0 0
# c 1 0 0 0
# d 0 0 1 0
# e 0 0 0 1
答案 1 :(得分:0)
可能这也有帮助:
m1 <- model.matrix(~0+workplace, data=dat)
dimnames(m1) <- lapply(dat, unique)
as.data.frame(m1)
# A B C D
#a 1 0 0 0
#b 0 1 0 0
#c 1 0 0 0
#d 0 0 1 0
#e 0 0 0 1