我想執行以下操作。如果該行中的一個值爲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
我想執行以下操作。如果該行中的一個值爲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