R:如果一个值为NA,则将所有行值设为NA
问题描述:
我想执行以下操作。如果该行中的一个值为NA
,则将data frame
中的某行的所有值替换为NA
。例如:R:如果一个值为NA,则将所有行值设为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
答
您可以尝试
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
答
如果你习惯使用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
答
除了别人已经发布,你可以使用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