【问题标题】:Contingency table from a 2x3 dataframe in rr中2x3数据帧的列联表
【发布时间】:2021-01-20 17:39:36
【问题描述】:

我有这个 df

Genero   Frustrado  No frustrado
<chr>      <int>        <int>
Hombre      138           9 
Mujer       145          12 

我需要把它变成这样的列联表:


                Frustrado  
Genero       Si          No
    
Hombre      138           9 
Mujer       145          12 


我怎样才能用一个简单的代码块来做到这一点? (我需要多次复制,我不想每次都写向量)

谢谢!

【问题讨论】:

    标签: r arrays dataframe contingency


    【解决方案1】:

    也许你可以试试下面的代码

    `dimnames<-`(
      as.table(as.matrix(df[-1])),
      list(Genero = df$Genero, Frustrado = c("si", "No"))
    )
    

    给了

            Frustrado
    Genero    si  No
      Hombre 138   9
      Mujer  145  12
    

    数据

    > dput(df)
    structure(list(Genero = c("Hombre", "Mujer"), Frustrado = c(138L,
    145L), `No frustrado` = c(9L, 12L)), class = "data.frame", row.names = c(NA,
    -2L))
    

    【讨论】:

    • 对不起@Thomas 但我不太明白代码的第一部分dimnames&lt;-。我运行它并抛出此错误“df$Genero 中的错误:'closure' 类型的对象不是子集”
    • @AleRey 这是因为 Thomas 非常合理地假设您的 tibble 被称为 df。将此代码中的 df 更改为您的数据框的名称,它应该可以工作
    • @AleRey dimnames&lt;- 将名称分配给表格的维度。我猜你有这个错误,因为你的df 中有因素。先试试df &lt;- type.convert(df,as.is = TRUE),然后运行上面的代码。
    • 感谢@AllanCameron,但我已经完成了,这就是输出。 dimnames&lt;-( as.table(as.matrix(tabla_genero_pivot[-1])), list(Genero = tabla_genero_pivot$Genero, Frustrado = c("si", "No")) )
    • @Thomas 就是这样!我按照你说的做了,效果很好!干杯!
    【解决方案2】:

    我们可以使用column_to_rownames

    library(tibble)
    out <- df %>%
              column_to_rownames('Genero') %>%
              as.matrix
    
    names(dimnames(out)) <- names(df)[1:2]
    

    数据

    df <- structure(list(Genero = c("Hombre", "Mujer"), Frustrado = c(138L,
    145L), `No frustrado` = c(9L, 12L)), class = "data.frame", row.names = c(NA,
    -2L))
    

    【讨论】:

      猜你喜欢
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多