我有一个像这样的数据框:
replaceanddropcolumn <- data.frame("avariable"=10,
"bvariable"=5,
"cvariable"=2)
avariable bvariable cvariable
1 10 5 2
我想使用grep函数查找数据框中是否存在cvariable
,然后将cvariable
替换为bvariable
,最后从数据框中删除cvariable
。所以最终的输出看起来像这样:
replaceanddropcolumn[["bvariable"]] <- replaceanddropcolumn[["cvariable"]]
replaceanddropcolumn[["cvariable"]] <- NULL
avariable bvariable
1 10 2
我需要if语句的原因是,如果cvariable
不存在,我想保留原始数据帧,例如。我有这样的数据框:
replaceanddropcolumn <- data.frame("avariable"=10,
"bvariable"=5,
"dvariable"=14)
谢谢!
答案 0 :(得分:3)
我们可以使用if-else
语句设计一个函数来完成此任务。
replace_fun <- function(df, target_column, replace_column){
if (target_column %in% colnames(df)){
df[[replace_column]] <- df[[target_column]]
df[[target_column]] <- NULL
}
return(df)
}
replace_fun
的第一个参数是数据框。第二个参数是目标列。第三个参数是替换列。
replaceanddropcolumn1 <- data.frame("avariable"=10,
"bvariable"=5,
"cvariable"=2)
replaceanddropcolumn2 <- data.frame("avariable"=10,
"bvariable"=5,
"dvariable"=14)
replace_fun(replaceanddropcolumn1, "cvariable", "bvariable")
# avariable bvariable
# 1 10 2
replace_fun(replaceanddropcolumn2, "cvariable", "bvariable")
# avariable bvariable dvariable
# 1 10 5 14