【问题标题】:Transform List into a Matrix in R将列表转换为 R 中的矩阵
【发布时间】:2015-04-27 18:55:08
【问题描述】:

我想将以下数据从 csv 文件转换为矩阵: 初始 csv 数据:

A,B
A,B
A,c
B,D
B,E

... 矩阵

  A B C D E
A 0 2 1 0 0
B 0 0 0 1 1
C....
D...
E....

我很确定可能有一些简单的方法可以做到这一点,而无需使用任何特定的包。任何想法或链接?

提前感谢社区

【问题讨论】:

    标签: r list matrix transform


    【解决方案1】:

    你在找table吗?

    dta <- read.table(text='A,B
    A,B
    A,c
    B,D
    B,E', sep=',')
    
    table(dta)
    ##    V2
    ## V1  B c D E
    ##   A 2 1 0 0
    ##   B 0 0 1 1
    

    【讨论】:

    • 是的,表函数似乎可以做到……它还会为“A”创建一个列吗?我要试试看
    【解决方案2】:

    您似乎正在寻找一个包含每组计数的数据透视表?我可能更容易在 excel 中创建数据透视表并将其加载到 R

    【讨论】:

    • 这很好用,谢谢……只需要用 0 填充没有值的列……将使用 Na 或 NaN 函数。谢谢
    【解决方案3】:

    您可以使用文件中的名称初始化一个空矩阵,然后填充它:

    data=read.csv("filename", header=F)
    names = as.character(unique(unlist(data)))
    nnames = length(names)
    
    mm = matrix(0, ncol=nnames, nrow=nnames, dimnames=list(names, names))
    for (rr in 1:nrow(data)) {
        e1 = as.character(data[rr,1])
        e2 = as.character(data[rr,2])
        mm[e1, e2] = mm[e1, e2] + 1
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-27
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2015-07-24
      • 2017-03-22
      • 2017-12-22
      • 2018-07-17
      • 2013-06-08
      相关资源
      最近更新 更多