gpt4 book ai didi

r - 如何根据R中具有相同字符串的两列的计算添加具有相同逻辑的多个新列

转载 作者:行者123 更新时间:2023-12-04 02:28:04 24 4
gpt4 key购买 nike

我有一个如下所示的表格

data <- data.frame(A = c(1,2,3,4,5),
B = c(1,2,3,4,5),
C = c(11,12,13,14,15),
trans_A = c(NA,1,2,3,4),
trans_B = c(NA,1,2,3,4),
trans_C = c(NA,11,12,13,14))

我需要为这个数据框创建/添加多个新列,新名称为 difference_Adifference_B 等,逻辑 difference_A = A - trans_A difference_B = B - trans_B 等。如何在 R 中执行此操作?

我试过这个:

new_df[paste("difference", cols, sep = "_")]<- c(NA, new_df[cols]-new_df[paste("trans",cols,sep = "_")], na.rm=TRUE)

它给了我错误消息“列的重复下标”

最佳答案

一个 dplyrpurrr 解决方案可以是:

map(.x = names(select(data, -starts_with("trans_"))),
~ data %>%
mutate(across(all_of(.x), .names = "difference_{col}") - across(all_of(paste0("trans_", .x))))) %>%
reduce(full_join)

A B C trans_A trans_B trans_C difference_A difference_B difference_C
1 1 1 11 NA NA NA NA NA NA
2 2 2 12 1 1 11 1 1 1
3 3 3 13 2 2 12 1 1 1
4 4 4 14 3 3 13 1 1 1
5 5 5 15 4 4 14 1 1 1

关于r - 如何根据R中具有相同字符串的两列的计算添加具有相同逻辑的多个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66013602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com