当您有一个包含计数值的列时的意外事件 table

Contingency table when you have a column with count values

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

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

如何使用“计数”列作为频率来制作 Year x Var 意外事件 table?

我们可以在base R

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

要包括 row/column 总数,可以使用 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))

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

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

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

给予

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