因子变量中每个类别的总和

问题描述 投票:0回答:1

我想要一个表格来计算除 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)
)
r sum
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.