当您有一列包含计数值时的列联表 数据

问题描述

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

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

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

解决方法

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
,

我们可以在xtabs中使用base R

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","A"),Count = c(10L,23L,36L,42L)),class = "data.frame",row.names = c(NA,-4L))
,

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

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

给予

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