【发布时间】:2018-05-03 21:51:33
【问题描述】:
我想将存储在数据框中的值添加到矩阵中它们所属的位置。
这是数据:
数据框:
df <- read.table(text=' A B C
name1 add1 1
name2 add1 2
name3 add1 3
name1 add2 1
name2 add2 2 ', header=TRUE)
> df
A B C
1 name1 add1 1
2 name2 add1 2
3 name3 add1 3
4 name1 add2 1
5 name2 add2 2
矩阵:
ma <- matrix(NA, ncol=2, nrow=3)
colnames(ma)<-c('add1', 'add2')
rownames(ma)<-c('name1', 'name2', 'name3')
> ma
add1 add2
name1 NA NA
name2 NA NA
name3 NA NA
所以df$A 中的唯一条目是ma 的行
df$B 中的唯一条目是ma 的列
生成的矩阵如下所示:
> ma
add1 add2
name1 1 1
name2 2 2
name3 3 NA
请注意,数据框可以按任意顺序排列,并且某些名称和添加的组合可能不存在(因此ma 中仍应有一个NA)
到目前为止,我无法生成工作代码来从df 中取出值并将它们写入ma
非常感谢您的建议。
谢谢!
【问题讨论】:
-
tidyr::spread(df, B, C) -
@KevinRoth。在已经有答案(和接受的答案)之后,请尽量不要编辑您的示例数据和预期输出。对于那些第一次查看帖子的人来说,这些答案看起来不正确。