【发布时间】: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
我有一个看起来像这样的数据框:
Year Var Count
2019 A 10
2020 B 23
2019 B 36
2020 A 42
如何使用“计数”列作为频率制作 Year x Var 列联表?
【问题讨论】:
标签: r tidyverse contingency
我们可以在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))
【讨论】:
在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
【讨论】: