【发布时间】:2020-10-20 19:38:32
【问题描述】:
我想使用dplyr 对如下所示的数据集执行一些操作:
data <- data.frame(day = c(rep(1, 15), rep(2, 15)), nweek = rep(rep(1:5, 3),2),
firm = rep(sapply(letters[1:3], function(x) rep(x, 5)), 2),
quant = rnorm(30), price = runif(30) )
每个观察都在日、周和公司级别(一周只有 2 天)。
我想通过以下方式总结数据(按firm分组)(1)取一周中across变量numeric的平均值(即quant和price),并为非数字变量获取第一个条目(在这种情况下,它只是 firm,但在我的真实数据集中,我有多个非数字变量(Date 和 character),它们可能会在一周 (nweek),所以我只想在一周的第一天输入所有非数字变量。
我尝试使用 summarise 和 across 但出现错误
> data %>% group_by(firm, nweek) %>% dplyr::summarise(across(which(sapply(data, is.numeric)), ~ mean(.x, na.rm = TRUE)),
+ across(which(sapply(data, !(is.numeric))), ~ head(.x, 1))
+ )
Error: Problem with `summarise()` input `..2`.
x invalid argument type
ℹ Input `..2` is `across(which(sapply(data, !(is.numeric))), ~head(.x, 1))`.
Run `rlang::last_error()` to see where the error occurred.
有什么帮助吗?
【问题讨论】: