以下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
的结构?
非常感谢。
答案 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))