【问题标题】:How to convert from frequency table to raw data in R如何从频率表转换为R中的原始数据
【发布时间】:2014-06-06 06:58:46
【问题描述】:

假设我有一个频率表:

t = matrix(c(20,10,5,15), ncol=2, dimnames=list(c("yes","no"), c("yes","no")))
t
    yes no
yes  20  5
no   10 15

我想将频率表转换回原始数据。我的代码是(不起作用):

a = rep(c("yes","no"), colSums(t(t)))
b = rep(c("yes","no"), colSums(t))

table(a,b)
        b
a     no yes
  no  20   5
  yes  0  25

谁能告诉我怎么了?

【问题讨论】:

  • 调用矩阵t不是一个好主意,因为t是一个主要用于矩阵的函数。像t(t) %*% t 这样的东西不太可读。

标签: r frequency


【解决方案1】:
mat <- matrix(c(20,10,5,15), ncol=2, dimnames=list(c("yes","no"), c("yes","no")))

a <- rep(rep(c("yes", "no"), 2), c(mat))
b <- rep(c("yes", "no"), colSums(mat))
a <- factor(a, levels=c("yes", "no"))
b <- factor(b, levels=c("yes", "no"))


table(a, b)
     b
a     yes no
  yes  20  5
  no   10 15

【讨论】:

    【解决方案2】:

    我想你想从reshape2 使用melt

    test = matrix(c(20,10,5,15), ncol=2, dimnames=list(c("yes","no"), c("yes","no")))
    
    test
    #    yes no
    #yes  20  5
    #no   10 15
    
    library(reshape2)
    
    melt(test)
    #  Var1 Var2 value
    #1  yes  yes    20
    #2   no  yes    10
    #3  yes   no     5
    #4   no   no    15
    

    【讨论】:

    猜你喜欢
    • 2012-11-17
    • 2021-11-17
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2020-01-24
    • 2019-08-27
    • 1970-01-01
    • 2015-03-31
    相关资源
    最近更新 更多