【问题标题】:Conditional replace and delete column条件替换和删除列
【发布时间】:2017-11-29 21:09:23
【问题描述】:

我有一个这样的数据框:

replaceanddropcolumn <- data.frame("avariable"=10,
                                   "bvariable"=5,
                                   "cvariable"=2)

  avariable bvariable cvariable
1        10         5         2

我想用grep函数查找cvariable是否存在于dataframe中,然后将cvariable替换为bvariable,最后从dataframe中删除cvariable。所以最终的输出应该是这样的:

replaceanddropcolumn[["bvariable"]] <- replaceanddropcolumn[["cvariable"]]
replaceanddropcolumn[["cvariable"]] <- NULL

  avariable bvariable
1        10         2

我需要 if 语句的原因是,如果 cvariable 不存在,我想保留原始数据帧,例如。我有一个这样的数据框:

replaceanddropcolumn <- data.frame("avariable"=10,
                                   "bvariable"=5,
                                   "dvariable"=14)

谢谢!

【问题讨论】:

    标签: r if-statement dataframe


    【解决方案1】:

    我们可以设计一个带有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
    

    【讨论】:

      猜你喜欢
      • 2011-06-09
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 2019-08-24
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 2020-04-03
      相关资源
      最近更新 更多