我有一个与此类似的数据库:
data <- tibble(X = c(1,2,3,4), X_2 = c(2,3,4,5),
Y = c(3,4,5,6), Y_2 = c(4,5,6,7))
我想在 X 和 Y 上进行变异,这样我就可以将 X 与 X_2 求和,将 Y 与 Y_2 求和,生成名为 X_3 和 Y_3 的新变量。
我正在尝试这样的事情:
data %>%
mutate(across(c(X,Y), ~ . + ._2 , .names = "{col}_3")) %>%
print()
或者像这样:
data %>%
mutate(across(c(X,Y), ~ . + paste0(.,"_2") , .names = "{col}_3")) %>%
print()
显然这些都不起作用,因为我不知道如何定义与我在 across 函数中使用的变量同名的第二个变量(但以后缀结尾)。
有人可以帮我吗?
提前致谢!
要使用 across 实现此目的,您可以使用 across 中的 cur_column() 函数来动态引用列名称。方法如下:
使用 mutate 和 across 创建新变量:
结果 <- data %>% mutate(across(c(X, Y), ~ . + get(paste0(cur_column(), "_2")), .names = "{col}_3"))