我正在尝试替换此表中所示的值。
- 如果
A
是NA
,并且B
和C
将A
设置为Unknown
。 - 如果
A
是NA
,并且B
或C
具有值,请将A
设置为Missing Value
A B C
1 NA NA NA
2 NA 200 NA
A B C
1 NotImportant NA NA
2 Unknown 200 NA
我尝试了某种,
if(is.na(ColumnA)) ColumnB[is.na(ColumnB)] <= "Not Important"
if(is.na(ColumnA)) ColumnB[!is.na(ColumnB)] <= "Unknown"
但我没有结果。
有人可以帮我吗?我希望我很好地描述了我的问题。
df$A <- ifelse(!is.na(df$A),
df$A,
ifelse(is.na(df$B) & is.na(df$C),
"Not Important",
"Missing Value"))
# A B C
# 1 Not Important NA NA
# 2 Missing Value 200 NA
您可以在 df
是您的数据的地方尝试一下:
df[rowSums(is.na(df))==3,]$A <- "NotImportant"
df[with(df, is.na(A) & (!is.na(B) | !is.na(C))),]$A <- "Unknown"
# A B C
#1 NotImportant NA NA
#2 Unknown 200 NA
这是使用dplyr
中的case_when
:
df <- structure(list(A = c(NA, NA), B = c(NA, 200L), C = c(NA, NA)), .Names = c("A",
"B", "C"), class = "data.frame", row.names = c("1", "2"))
library(dplyr)
df%>%
mutate(A=case_when(
is.na(.$A)&is.na(.$B)&is.na(.$C) ~ "Not Important",
is.na(.$A)&(is.na(.$B)|is.na(.$C)) ~ "Unknown")
)
A B C
1 Not Important NA NA
2 Unknown 200 NA