【问题标题】:Convert 2 columns dataframe to a 2 dimensional matrix in R将 2 列数据帧转换为 R 中的二维矩阵
【发布时间】:2013-11-22 21:13:19
【问题描述】:

您好,我正在尝试将具有 2 个字符列的 R 数据帧转换为矩阵。这是我正在尝试做的一个示例:

假设我有这个数据框:

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 中实现这一点吗?

【问题讨论】:

    标签: r matrix dataframe


    【解决方案1】:
    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
    

    【讨论】:

    • @user1375640,试试View(as.data.frame.matrix(t))
    • 这很好用,但是当我像这样分配表(DF)时:t = table(DF),然后我尝试查看(t)我得到 3 列名称 work Freq one test1 1 有有机会让数据框看起来像您在上面显示的输出,每个工作都作为一列?
    【解决方案2】:

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

     data.matrix(DF)
    
     xtabs( ~ name+work, data=DF)
    

    您无需转换为矩阵即可使 xtabs 工作,并且与 R 中的往常一样,这些值将在控制台打印出来,但“DF”保持不变,除非您指定 (&lt;-) '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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      相关资源
      最近更新 更多