在R中使用跨函数

问题描述 投票:0回答:1

我有一个与此类似的数据库:

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 函数中使用的变量同名的第二个变量(但以后缀结尾)。

有人可以帮我吗?

提前致谢!

r dplyr across
1个回答
0
投票

要使用 across 实现此目的,您可以使用 across 中的 cur_column() 函数来动态引用列名称。方法如下:

使用 mutate 和 across 创建新变量:

结果 <- data %>% mutate(across(c(X, Y), ~ . + get(paste0(cur_column(), "_2")), .names = "{col}_3"))

© www.soinside.com 2019 - 2024. All rights reserved.