R:如果一个值为NA,则将所有行值设为NA

时间:2014-12-07 03:33:33

标签: r

我想做以下事情。如果行中的一个值为NA,则将data frame中行的所有值替换为NA。示例:

 df <- data.frame( id=c(NA,20,30,40,NA,60), value=c(15,NA,35,45,55,65))

输出为

  id value
1 NA    NA
2 NA    NA
3 30    35
4 40    45
5 NA    NA
6 60    65

3 个答案:

答案 0 :(得分:3)

除了其他人发布的内容之外,您还可以使用complete.cases功能:

df <- data.frame(id = c(NA, 20, 30, 40, NA, 60),
                 value = c(15, NA, 35, 45, 55, 65))
complete.cases(df)
## [1] FALSE FALSE  TRUE  TRUE FALSE  TRUE
df[complete.cases(df), ]
##   id value
## 3 30    35
## 4 40    45
## 6 60    65

您可以将不完整的行设置为NA

df[!complete.cases(df), ] <- NA
df
##   id value
## 1 NA    NA
## 2 NA    NA
## 3 30    35
## 4 40    45
## 5 NA    NA
## 6 60    65

答案 1 :(得分:2)

你可以尝试

df[!!rowSums(is.na(df)),] <- NA
df
#  id value
#1 NA    NA
#2 NA    NA
#3 30    35
#4 40    45
#5 NA    NA
#6 60    65

或者

df[with(df, is.na(id)|is.na(value)),] <- NA

答案 2 :(得分:1)

如果您对apply功能感到满意:

R>df[ apply(is.na(df), 1, any), ] <- NA
R>df
  id value
1 NA    NA
2 NA    NA
3 30    35
4 40    45
5 NA    NA
6 60    65