如何解决仅在数据框中已经存在的情况下,添加具有相同前缀的列
这是我的数据框
df2 <- data.frame(ID = c("1100455","1100455","1100464","1100464"),CATEGORIE = c("10110","10160","10604","11220","10110","10140"),RANK = c("1","1","0","1"),MD = c("0","3","4","0" ),PROD = c(2345.00,1114.58,501.40,0.00,2720.00,636.80),VALUE = c(540.00,0.00),QANT = c(50.00,5.00,50.00,VALUE3 = c(563.76,17.35,PROD3 = c(4100,2100,1740,265,3978,940)
)
我想要实现的是将列添加到同名列(如果它以数字3结尾)并且存在的话(例如PROD和PROD3),我可以这样做
df3 <- df2 %>% mutate(PROD = if (exists('PROD3',where=.)) PROD + PROD3 else PROD)
df3 <- df2 %>% mutate(VALUE = if (exists('VALUE3',where=.)) VALUE + VALUE3 else VALUE)
df3 <- df2 %>% mutate(QANT = if (exists('QANT3',where=.)) QANT + QANT3 else QANT)
它适用于每种情况,但是我将使用列表(l_data thx
解决方法
我做到了,我想有多种方法(例如,应用)
l_data <- c("PROD","VALUE","QANT")
for(item in l_data) {
var3 <- paste0(item,"3")
if (var3 %in% colnames(df2)) {
df2 <- df2 %>% mutate(!!item := get(item) + get(var3))
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。