【发布时间】:2019-07-19 23:35:21
【问题描述】:
我正在尝试按组计算多个变量的插值中位数。 我的数据框如下所示:
# A tibble: 6 x 8
id eu_image eu_insurance eurobonds free_movement_welfare eu_cn_solidarity country_code country_party_mass
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl+lbl> <chr>
1 CAWI200000100 4 4 4 3 3 2 germany_7
2 CAWI300000784 2 2 1 1 1 3 italy_9
3 CAWI100000787 3 3 2 2 3 1 france_13
4 CAWI500000081 3 2 2 1 3 5 spain_2
5 CATI500000067 4 3 2 2 6 5 spain_3
6 CAWI100000398 2 4 4 2 5 1 france_2
当我运行以下代码通过分组变量 country_party_mass 计算插值平均值时:
party_median <- newdata %>%
group_by(country_party_mass) %>%
dplyr::summarise_at(c( "eu_image",
"eu_cn_solidarity",
"eurobonds",
"free_movement_welfare",
"eu_insurance"),
funs(interp.median(., na.rm=TRUE))) %>%
as.data.frame()
我收到以下错误:
summarise_impl(.data, dots) 中的错误:
eu_cn_solidarity列的长度必须为 1(汇总值),而不是 0
我已经检查过之前关于类似问题的问题,但我找不到可行的解决方案。
【问题讨论】:
-
对于某些
country_party_mass,所有eu_cn_solidarity都是不适用的。例如mtcars[mtcars$cyl==4,'gear']<-NA;mtcars %>% group_by(cyl) %>% summarise_at(vars(c('hp','gear')),~interp.median(.,na.rm = TRUE)) -
谢谢,这是实际问题。您是否知道是否有一种方法可以将组名保留为 NA 而不是观察值不足的组的中位数?
-
我认为 Cettt 的回答可以胜任。