我想要一个表格来计算除 id 之外的所有变量中每个因素类别的频率。我有许多变量,每个变量可以包含 1、0 或 NA,并且我想要一个表来给出每个变量的频率。下面我将 NA 更改为 2,因为 NA 不作为因子变量中的一个类别包含在内,然后我将除 id 因子之外的每个变量都包含在内。我无法弄清楚获取下面“想要”中的表的最后一步,该表只是计算每个变量有多少个 1、多少个 0 和多少个 NA。
# have
df3=data.frame(id=c(1,2,3,4,5,6,7),
ibd=c(0,1,1,0,0,1,1),
ihd=c(1,1,0,NA,0,0,1),
psoriasis=c(0,0,NA,0,0,1,1),
mi=c(1,0,0,0,0,NA,1)
)
df3 %>% replace(is.na(.), 2)
df3 <- df3 %>%
mutate(across(-c(id), as.factor))
# want
df5=data.frame(id=c("1s", "0s", "NAs"),
ibd=c(4,3,0),
ihd=c(3,3,1),
psoriasis=c(2,4,1),
mi=c(2,4,1)
)
library(tidyr); library(dplyr)
pivot_longer(df3, -id) |>
group_by(name) |>
count(value) |>
pivot_wider(names_from=name, values_from=n, values_fill=0)
# A tibble: 3 × 5
value ibd ihd mi psoriasis
<fct> <int> <int> <int> <int>
1 0 3 3 4 4
2 1 4 3 2 2
3 NA 0 1 1 1