R 计算累计值:使用摘要时包括0个值(n())

R 计算累计值:使用摘要时包括0个值(n()),r,dplyr,R,Dplyr,我有这个数据框: > df <- data.frame(o = c(0,1,1,1), e = c(1, 1, 1, 1)) > df o e 1 0 1 2 1 1 3 1 1 4 1 1 >测向 o e 1 0 1 2 1 1 3 1 1 4 1 1 我想用一定的规则来计算。我试过这个: out <- df %>% mutate(L = case_when(o == 1 & e == 1 ~ 'a',

我有这个数据框:

> df <- data.frame(o = c(0,1,1,1), e = c(1, 1, 1, 1))
> df
  o e
1 0 1
2 1 1
3 1 1
4 1 1
>测向
o e
1 0 1
2 1 1
3 1 1
4 1 1
我想用一定的规则来计算。我试过这个:

out <- df %>% 
    mutate(L = case_when(o == 1 & e == 1 ~ 'a',
                         o == 0 & e == 1 ~ 'b',
                         o == 1 & e == 0 ~ 'c',
                         o == 0 & e == 0 ~ 'd')) %>%
    group_by(L) %>% 
    summarise(n())
out%
当(o==1&e==1~'a'时,突变(L=case_),
o==0&e==1~'b',
o==1&e==0~'c',
o==0&e==0~'d'))%>%
组别(1)%>%
总结(n())
我这样做节省了很多时间,但我得到了以下结论:

> out
# A tibble: 3 x 2
      l `n()`
  <chr> <int>
1     a     3
2     b     1
>输出
#一个tibble:3x2
l`n()`
1 a 3
2 b 1

如何在
out
的创建代码中包含0个值(
c=0
d=0
),以使其自动用于任何字母(
a
b
c
d

out <- df %>% 
  mutate(L = factor(case_when(o == 1 & e == 1 ~ 'a',
                              o == 0 & e == 1 ~ 'b',
                              o == 1 & e == 0 ~ 'c',
                              o == 0 & e == 0 ~ 'd'), 
                    levels = c('a', 'b', 'c', 'd'))) %>% 
  select(L) %>% table(L = .) %>% data.frame
out <- df %>% 
  mutate(L = factor(case_when(o == 1 & e == 1 ~ 'a',
                              o == 0 & e == 1 ~ 'b',
                              o == 1 & e == 0 ~ 'c',
                              o == 0 & e == 0 ~ 'd'), 
                    levels = c('a', 'b', 'c', 'd'))) %>% 
  select(L) %>% table(L = .) %>% data.frame
#out
#  L Freq
#1 a    3
#2 b    1
#3 c    0
#4 d    0