寻找最佳变量以用优选变量的顺序替换NA

时间:2017-07-19 13:33:40

标签: r missing-data

我有一个包含许多NAs的数据集。我想创建一个值为variable1的新变量。如果variable1为NA,则使用variable2代替。如果variable2也是NA,请使用variable3等。我已经创建了一个函数来执行此操作,但它不能按预期工作。

best_variable <- function(var_best1,var_best2,var_best3){

  if(!is.na(var_best1)) {return(var_best1)}  

  if(is.na(var_best1) & !is.na(var_best2)) {return(var_best2)}

  if(is.na(var_best1) & is.na(var_best2) & !is.na(var_best3)) {return(var_best3)}

  if(is.na(var_best1) & is.na(var_best2) & is.na(var_best3)) {return(NA)}
}  

请参阅mtcars数据集的示例。

test <- head(mtcars)

test$vs[3:5] <- NA; test$am[test$am == 1] <- NA

test$new_var <- best_variable(test$vs,
                              test$am,
                              test$gear) 
Not the expected result as new_var[3] should be 4, as test$gear[3] is 4. 

test$new_var <- lapply(mtcars[,.(vs,am,gear)], best_variable) # error

best_variable(test$vs[3],
              test$am[3],
              test$gear[3]) # Gets the right result

我在这里缺少什么?为什么我的函数在应用于整个数据集时不起作用?

1 个答案:

答案 0 :(得分:1)

export * from './Help/HelpMode';