r语言 - 交叉表计算函数



我正在尝试创建自动将我的结果放入数据框中的函数。我有一个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( 有一个等于我正在使用的变量名的列名(而不是"Freq"(,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
您将

始终在NA行中0,因为您仅按TRUE进行过滤。使用该TRUE 1sum的事实,您可以按以下方式汇总数据:

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

最新更新