嗨我想将具有2个字符列的R数据帧转换为矩阵。这里是什么,我试图做一个例子:将2列数据帧转换为R中的2维矩阵
想我有这个数据帧:
name work
one test1
one test2
two test1
two test3
three test3
而且我想将它变成这个矩阵
name test1 test2 test3
one 1 1 0
two 1 0 1
three 0 0 1
任何想法如何我R中可以做到这一点吗?
嗨我想将具有2个字符列的R数据帧转换为矩阵。这里是什么,我试图做一个例子:将2列数据帧转换为R中的2维矩阵
想我有这个数据帧:
name work
one test1
one test2
two test1
two test3
three test3
而且我想将它变成这个矩阵
name test1 test2 test3
one 1 1 0
two 1 0 1
three 0 0 1
任何想法如何我R中可以做到这一点吗?
DF <- read.table(text="name work
one test1
one test2
two test1
two test3
three test3", header=TRUE)
table(DF)
work
name test1 test2 test3
one 1 1 0
three 0 0 1
two 1 0 1
我对你有两个R字:data.matrix
和xtabs
。
data.matrix(DF)
xtabs(~ name+work, data=DF)
你不需要做转换矩阵得到xtabs
工作,并一如既往的R,这些值将打印在控制台上,但“DF”保持不变,除非您分配(<-
)值'DF'。
您可能会注意到名称列是“无序”(一,三,二)。 (为什么没有英语语言的作者提出了数字的文本版本词汇正确排序?)你可以操纵的因素的水平:
> DF$name <- factor(DF$name, levels=levels(DF$name)[c(1,3,2)])
> xtabs(~ name+work, data=DF)
work
name test1 test2 test3
one 1 1 0
two 1 0 1
three 0 0 1
@ user1375640,尝试'视图(as.data.frame。矩阵(T))'。 – A5C1D2H2I1M1N2O1R2T1
这很好,但是当我分配表(DF)如:t =表(DF),然后我尝试查看(t)我得到3列 名称工作频率 一个测试1 1 是否有机会数据框看起来像上面显示的每个工作作为列的输出? – user1375640