【问题标题】:Contingency table when you have a column with count values当您有一列包含计数值时的列联表
【发布时间】:2021-07-28 07:25:47
【问题描述】:

我有一个看起来像这样的数据框:

Year      Var    Count
2019       A     10
2020       B     23
2019       B     36
2020       A     42

如何使用“计数”列作为频率制作 Year x Var 列联表?

【问题讨论】:

    标签: r tidyverse contingency


    【解决方案1】:

    我们可以在base R中使用xtabs

    xtabs(Count ~ Year + Var, df1)
    #        Var
    #Year    A  B
    #   2019 10 36
    #   2020 42 23
    

    要包含行/列总计,可以使用addmargins

    addmargins(xtabs(Count ~ Year + Var, df1))
    #     Var
    #Year     A   B Sum
    #  2019  10  36  46
    #  2020  42  23  65
    #  Sum   52  59 111
    

    数据

    df1 <- structure(list(Year = c(2019L, 2020L, 2019L, 2020L), Var = c("A", 
    "B", "B", "A"), Count = c(10L, 23L, 36L, 42L)), class = "data.frame",
    row.names = c(NA, 
    -4L))
    

    【讨论】:

    • 出于好奇,有没有办法同时包含列总计和行总计?
    【解决方案2】:

    tidyverse 的帮助下janitor 你可以这样做:

    library(tidyr)
    library(janitor)
    
    df %>%
      pivot_wider(names_from = Var, values_from = Count) %>%
      adorn_totals(where = c("row", "col"))
    
    #  Year  A  B Total
    #  2019 10 36    46
    #  2020 42 23    65
    # Total 52 59   111
    

    【讨论】:

      【解决方案3】:

      使用reshape 使其“宽”的基本 R 选项,即,

      reshape(
        df,
        direction = "wide",
        idvar = "Year",
        timevar = "Var"
      )
      

      给予

        Year Count.A Count.B
      1 2019      10      36
      2 2020      42      23
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-14
        • 1970-01-01
        • 2015-12-13
        相关资源
        最近更新 更多