按条件访问和更改data.frame变量

时间:2015-11-04 17:16:40

标签: r

以下df示例显示了每小时的阳光照射。 在夜间(21:00-02:00),原始值已设置为NA

YY MM DD HH ssd282 ssd867
1962  1  1  0     NA     NA
1962  1  1  1     NA     NA
1962  1  1  2     NA     NA
1962  1  1  3      0      0
1962  1  1  4      0      0
...
1962  1  1 19      0      0
1962  1  1 20      0      0
1962  1  1 21     NA     NA
1962  1  1 22     NA     NA
1962  1  1 23     NA     NA

我想使用描述以下内容的条件将这些NAs设置为0

if(df$HH < 4 & df$HH > 20) {
    df[,(5,6)] = 0
}
else {
keep all values
}

我真的不知道如何在R中实现这一目标。有没有人知道怎么做而不改变df的结构?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我们可以遍历第5列和第6列(lapply(..),并使用ifelse

根据条件替换值
df[,5:6] <- lapply(df[,5:6], function(x) ifelse((df$HH <4 | df$HH > 20 ) & is.na(x),0 , x))