我有一个数据框,我想在其中对具有相同前缀的列值求和以生成新列。我当前的问题是它没有考虑我的group_by变量并返回相同的值。问题的一部分是我在 across 函数中选择的 .cols 变量吗?
样本数据
library(dplyr)
library(purrr)
set.seed(10)
dat <- data.frame(id = rep(1:2, 5),
var1.pre = rnorm(10),
var1.post = rnorm(10),
var2.pre = rnorm(10),
var2.post = rnorm(10)
) %>%
mutate(index = id)
var_names = c("var1", "var2")
Run Code Online (Sandbox Code Playgroud)
我尝试过的
sumfunction <- map(
var_names,
~function(.){
sum(dat[glue("{.x}.pre")], dat[glue("{.x}.post")], na.rm = TRUE)
}
) %>%
setNames(var_names)
dat %>%
group_by(id) %>%
summarise(
across(
.cols = index,
.fns = sumfunction,
.names = "{.fn}"
)
) %>%
ungroup
Run Code Online (Sandbox Code Playgroud)
所需输出