如何将超出范围的data.frame的值定义为NA?

如何将超出范围的data.frame的值定义为NA?,r,optimization,R,Optimization,我目前正在尝试创建一个例程来帮助我清理数据集。对于某些数值/整数变量,存在允许值的范围(最小值和最大值)。不包含在该范围内的值应声明为NA 我当前的代码: df$variable[df$variable < min.range && df$variable > max.range] <- NA df$variable[df$variablemax.range]您可以像这样获得备选方案的执行时间: #processing time of option 1 sys

我目前正在尝试创建一个例程来帮助我清理数据集。对于某些数值/整数变量,存在允许值的范围(最小值和最大值)。不包含在该范围内的值应声明为NA

我当前的代码:

df$variable[df$variable < min.range && df$variable > max.range] <- NA

df$variable[df$variablemax.range]您可以像这样获得备选方案的执行时间:

#processing time of option 1
system.time({ 
 df$variable[df$variable < min.range && df$variable > max.range] <- NA
}) 

#processing time of option 2
system.time({ 
 df$variable[!df$variable %in% c(min.range:max.range)] <- NA
}) 
#选项1的处理时间
系统时间({

df$variable[df$variablemax.range]您可以像这样获得备选方案的执行时间:

#processing time of option 1
system.time({ 
 df$variable[df$variable < min.range && df$variable > max.range] <- NA
}) 

#processing time of option 2
system.time({ 
 df$variable[!df$variable %in% c(min.range:max.range)] <- NA
}) 
#选项1的处理时间
系统时间({

df$variable[df$variablemax.range]您的第一种方法是错误的,原因有二:

  • 首先,值不能是
    >max.range
    ,您需要一个

  • 其次,不需要只检查第一个值的双精度
    &
    |

因此,您需要将第一行代码替换为:

df$variable[df$variable < min.range | df$variable > max.range] <- NA  

df$variable[df$variablemax.range]您的第一种方法是错误的,原因有二:

  • 首先,值不能是
    >max.range
    ,您需要一个

  • 其次,不需要只检查第一个值的双精度
    &
    |

因此,您需要将第一行代码替换为:

df$variable[df$variable < min.range | df$variable > max.range] <- NA  

df$variable[df$variablemax.range]@CathG修复了这个问题,谢谢!)代码中不需要
c(…)
。@CathG修复了这个问题,谢谢!;)代码中不需要
c(…)