R 根据条件替换值
我试图替换如下表中所示的值 如果A是NA,B和C也将A设置为未知。 如果A为NA且B或C已获得值,则将A设置为缺失值 我试过一些R 根据条件替换值,r,dataframe,R,Dataframe,我试图替换如下表中所示的值 如果A是NA,B和C也将A设置为未知。 如果A为NA且B或C已获得值,则将A设置为缺失值 我试过一些 if(is.na(ColumnA)) ColumnB[is.na(ColumnB)] <= "Not Important" if(is.na(ColumnA)) ColumnB[!is.na(ColumnB)] <= "Unknown" 但我没有得到任何结果 有人能帮我解决这个问题吗?我希望我能很好地描述我的问题。您可以尝试以下方法,其中df是您的数
if(is.na(ColumnA)) ColumnB[is.na(ColumnB)] <= "Not Important"
if(is.na(ColumnA)) ColumnB[!is.na(ColumnB)] <= "Unknown"
但我没有得到任何结果
有人能帮我解决这个问题吗?我希望我能很好地描述我的问题。您可以尝试以下方法,其中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_时如何做到这一点:
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
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
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