汇总所有因素组合的观测数据 [英] Summarize data with observations for all combinations of factors
本文介绍了汇总所有因素组合的观测数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有时需要一个完整的数据框架,其中包含分组因素的所有组合的观察结果,即使原始数据中没有这些组合(即用NA数据填充这些空白)。
考虑使用mtcars
的以下示例:
mtcars %>% group_by(cyl, gear) %>% dplyr::summarise(N = n())
# A tibble: 8 x 3
# Groups: cyl [3]
cyl gear N
<dbl> <dbl> <int>
1 4 3 1
2 4 4 8
3 4 5 2
4 6 3 2
5 6 4 4
6 6 5 1
7 8 3 12
8 8 5 2
按cyl
和gear
分组时,缺少cyl=8
和gear=4
的观测。有没有可能以一种简单的方式(希望是基于整齐的方式)获得这个汇总表,其中包括一行对缺失的因素组合的NA观察?例如,所需的输出将为:
# A tibble: 9 x 3
# Groups: cyl [3]
cyl gear N
<dbl> <dbl> <int>
1 4 3 1
2 4 4 8
3 4 5 2
4 6 3 2
5 6 4 4
6 6 5 1
7 8 3 12
8 8 4 NA
9 8 5 2
推荐答案
complete
删除组属性后可以使用ungroup
library(dplyr)
library(tidyr)
mtcars %>%
group_by(cyl, gear) %>%
dplyr::summarise(N = n()) %>%
ungroup %>%
complete(cyl, gear)
# A tibble: 9 x 3
# cyl gear N
# <dbl> <dbl> <int>
#1 4 3 1
#2 4 4 8
#3 4 5 2
#4 6 3 2
#5 6 4 4
#6 6 5 1
#7 8 3 12
#8 8 4 NA
#9 8 5 2
或者另一个选项是创建一个具有列的唯一元素的组合数据集,然后执行left_join
(不像前一个那样简单)
crossing(cyl = unique(mtcars$cyl), gear = unique(mtcars$gear)) %>%
left_join(mtcars %>%
group_by(cyl, gear) %>%
dplyr::summarise(N = n()))
这篇关于汇总所有因素组合的观测数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文