我有一个问题需要解决,但是我似乎找不到简洁的解决方案。虽然Stack Overflow上有一些类似的问题,但并没有完全符合我的情况。
拿一些示例数据:
library(dplyr)
dat <- tibble(
group1 = factor(sample(c("one", "two"), 10, replace = T)),
group2 = factor(sample(c("alpha", "beta"), 10, replace = T)),
var1 = rnorm(10, 20, 2),
var2 = rnorm(10, 20, 2),
var3 = rnorm(10, 20, 2),
other1 = sample(c("a", "b", "c"), 10, replace = T),
other2 = sample(c("a", "b", "c"), 10, replace = T),
)
我想要总结仅数值变量(即忽略
other1
和other2
),但输出需要按group1
和group2
进行分组。我尝试了以下的代码,但它返回一个错误,因为它试图将我的
summarise()
函数应用于分组变量。dat %>%
group_by(group1, group2) %>%
select(where(is.numeric)) %>%
map(~ .x %>%
filter(!is.na(.x)) %>%
summarise(mean = mean(.x),
sd = sd(.x),
median = median(.x),
q1 = quantile(.x, p = .25),
q3 = quantile(.x, p = .75))
)
我期望的输出应该是这样的
group1 group2 mean sd median q1 q3
<fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
1 one alpha ? ? ? ? ?
2 one beta ? ? ? ? ?
3 two alpha ? ? ? ? ?
4 two beta ? ? ? ? ?
任何解决方案都将不胜感激。
谢谢, Sam
group_by(group1, group2)
,然后配合新的across
使用summarise_at
/summarise_if
/summarise
?我认为你让你的代码变得比必要的更加复杂了。 - camille