我尝试创建自动将结果放入数据框的函数。我有一个带有一个名义变量和几个逻辑变量的data_frame:
categ_var var_log1 var_log2 var_log3 var_log4
cat1 TRUE TRUE FALSE TRUE
cat2 FALSE TRUE NA TRUE
cat2 FALSE NA FALSE FALSE
cat4 TRUE FALSE TRUE FALSE
cat1 NA NA TRUE FALSE
cat3 TRUE FALSE FALSE FALSE
cat3 TRUE TRUE FALSE TRUE
cat1 FALSE TRUE NA TRUE
cat3 FALSE NA FALSE FALSE
cat5 TRUE FALSE TRUE FALSE
cat6 NA NA TRUE FALSE
cat7 TRUE FALSE FALSE FALSE
使用功能后:
as.data.frame(example %>% filter(var_log1 == TRUE) %>% pull(categ_var) %>% table(useNA = 'always'))
我收到了这个结果:
. Freq
1 cat1 1
2 cat2 0
3 cat3 2
4 cat4 1
5 cat5 1
6 cat6 0
7 cat7 1
8 <NA> 0
现在,我想做两件事: a)列名等于我使用的变量名(而不是&#39; Freq&#39;), b)创建一个函数,该函数使用源数据框中的所有这些逻辑变量,并将其放入一个具有相应列名的数据框中。
任何帮助表示赞赏!
编辑:期望的输出:
var_log1 var_log2 var_log3
1 cat1 1 2 2
2 cat2 0 1 1
3 cat3 2 1 1
4 cat4 1 0 0
5 cat5 1 0 0
6 cat6 0 0 0
7 cat7 1 0 0
8 NA 0 0 0
答案 0 :(得分:0)
0
行中始终有NA
,因为您只按TRUE
进行过滤。使用TRUE
中1
为sum
的事实,您可以通过以下方式汇总数据:
library(dplyr)
example %>%
group_by(categ_var) %>%
summarise_all(sum, na.rm = T)
# A tibble: 7 x 5
# categ_var var_log1 var_log2 var_log3 var_log4
# <fctr> <int> <int> <int> <int>
# 1 cat1 1 2 1 2
# 2 cat2 0 1 0 1
# 3 cat3 2 1 0 1
# 4 cat4 1 0 1 0
# 5 cat5 1 0 1 0
# 6 cat6 0 0 1 0
# 7 cat7 1 0 0 0