2013-11-22 159 views
3

嗨我想将具有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中可以做到这一点吗?

回答

3
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 
+0

@ user1375640,尝试'视图(as.data.frame。矩阵(T))'。 – A5C1D2H2I1M1N2O1R2T1

+0

这很好,但是当我分配表(DF)如:t =表(DF),然后我尝试查看(t)我得到3列 名称工作频率 一个测试1 1 是否有机会数据框看起来像上面显示的每个工作作为列的输出? – user1375640

2

我对你有两个R字:data.matrixxtabs

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