首页 > 解决方案 > 如果 R 中的其他值是 NA,我如何使某些行值 NA?

问题描述

我有一个包含三列Time、观察值 ( Obs.Value) 和插值 ( ) 的数据框Interp.Value。如果 的值Obs.ValueNA那么 的值Interp.Value也应该是NA。我可以整行NA,但我需要保持Time价值。

这是重复:

dat <- data.frame(matrix(ncol = 3, nrow = 10))
x <- c("Time", "Obs.Value", "Interp.Value")
colnames(dat) <- x
dat$Time <- seq(1,10,1)
dat$Obs.Value <- c(5,6,7,NA,NA,5,4,3,NA,2)
interp <- approx(dat$Time,dat$Obs.Value,dat$Time)
dat$Interp.Value <- round(interp$y,1)

这是构成整行的代码NA

dat[with(dat, is.na(Obs.Value)|is.na("Interp.Value")),] <- NA

以下是输出的样子:

   Time Obs.Value Interp.Value
1     1         5            5
2     2         6            6
3     3         7            7
4     4        NA           NA
5     5        NA           NA
6     6         5            5
7     7         4            4
8     8         3            3
9     9        NA           NA
10   10         2            2

标签: r

解决方案


dat$Interp.Value[is.na(dat$Obs.Value)] <- NA
dat
#    Time Obs.Value Interp.Value
# 1     1         5            5
# 2     2         6            6
# 3     3         7            7
# 4     4        NA           NA
# 5     5        NA           NA
# 6     6         5            5
# 7     7         4            4
# 8     8         3            3
# 9     9        NA           NA
# 10   10         2            2

或者,如果任一列NA都足够,那么

dat[!complete.cases(dat[,-1]),-1] <- NA

推荐阅读