I have an example df:
df <- data.frame(
var1 = c("A", "B"),
var2 = c("C", "D"),
var3 = c("E", "F"),
var4 = c("G", "H"),
var5 = c("I", "J"),
var6 = c("K", "L"),
var7 = c("M", "N"),
var8 = c(NA, "P"))
and df2 is my desired output:
df2 <- data.frame(
var1 = c("I", "B"),
var2 = c("Z", "D"),
var3 = c("M", "F"),
var4 = c("G", "H"),
var5 = c("I", "J"),
var6 = c("K", "L"),
var7 = c("M", "N"),
var8 = c(NA, "P"),
inputed_flag = c("Y","N"))
Basically the logic is as follows:
df3 <- df %>%
mutate(var1 = ifelse(is.na(var8), var5, var1),
var2 = ifelse(is.na(var8), "Z", var2),
var3 = ifelse(is.na(var8), var7, var3),
imputed_flag = ifelse(is.na(var8), "Y", "N"))
but in R is there an easier/more compact way of mutating columns based on a single if condition? The condition in this case is if var8 is missing, then impute certain values for other variables. I don't know another way of doing this without a bunch of ifelse statements with the same conditon.
In sas we can do something like this
if missing(var8) then do;
var1 = var5;
var2 = "Z";
var3 = var7;
imputed_flag = "Y";
end;
if not missing(var8) then imputed_flag = "N";
where if a single if condition is met, then several variables can be mutated all in one if statement.
I'm looking for an elegant R solution like this in sas if possible.