簡體   English   中英

使用 dplyr 將一組中缺少的級別添加到匯總表

[英]Add levels missing in one group to summary table using dplyr

在匯總數據時,某些組的觀察結果可能不存在於另一組中。 在下面的示例中,第 2 組沒有男性。 我怎樣才能以整潔的方式將這些觀察結果插入匯總表中?

數據示例:

a <- data.frame(gender=factor(c("m", "m", "m", "f", "f", "f", "f")), group=c(1,1,1,1,1,2,2))
  gender group
1      m     1
2      m     1
3      m     1
4      f     1
5      f     1
6      f     2
7      f     2

數據摘要:

a %>% group_by(gender, group) %>% summarise(n=n())

  gender group     n
  <fct>  <dbl> <int>
1 f          1     2
2 f          2     2
3 m          1     3

所需的 output:

  gender group     n
  <fct>  <dbl> <int>
1 f          1     2
2 f          2     2
3 m          1     3
4 m          2     0

最后,我們可以使用complete

library(dplyr)
library(tidyr)
a %>%
    group_by(gender, group) %>%
    summarise(n=n(), .groups = 'drop') %>% 
    complete(gender, group, fill = list(n = 0))

-輸出

# A tibble: 4 x 3
#  gender group     n
#  <fct>  <dbl> <dbl>
#1 f          1     2
#2 f          2     2
#3 m          1     3
#4 m          2     0

或者一個選項也是重塑寬然后回到長格式

a %>% 
  pivot_wider(names_from = group, values_from = group,
         values_fn = length, values_fill = 0) %>% 
  pivot_longer(cols = -gender, names_to = 'group', values_to = 'n')

base R中更容易

as.data.frame(table(a))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM