我想对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.
有什么帮助吗?