用if应用函数

时间:2014-07-10 15:17:22

标签: r plyr

我正在努力在我的df的一列上实现一个简单的指令。

我有一个长列,其中许多条目为#VALUE,还有一些具有合法数字。我想要做的是将“#VALUE”条目更改为na,然后使用函数na.locf将实际数字填入所有这些行。

我已经尝试了几次迭代并没有运气,如下所示。有谁知道这个很好的解决方案?谢谢!

尝试1:

y2005[,24]=apply(y2005[24],2, function(x) if(x=="#VALUE") {x=NA})

尝试2:

spreadfind=function(x) {
 if(x=="#VALUE")
   return(NA)}

y2005$spread=sapply(y2005$spread,spreadfind) 

理想情况下,这两个理论上都会出现:

y2005$spread=na.locf(y2005$spread,fromLast=FALSE)

1 个答案:

答案 0 :(得分:1)

您的数据框y2005和您指的是第24列吗?替换" #VALUE"使用NA,您只需要执行

y2005[, 24][y2005[, 24] == "#VALUE"] <- NA