I want to switch column B and C conditional on column ID; only switch when ID = N. My following code works, but is there a simpler/intuitive method?
df
ID A B C
Y 4 2 4
Y 1 5 7
N 8 3 NaN
N 6 2 NaN
Expected df
ID A B C
Y 4 2 4
Y 1 5 7
N 8 NaN 3
N 6 NaN 2
df$Bnew <- ifelse(df$ID== "N", df$C, df$B)
df$Cnew <- ifelse(df$ID== "N", df$B, df$C)
drops <- c("B", "C")
df <- df[, !names(df) %in% drops]
colnames(df)[colnames(df) == "Bnew"] <- "B"
colnames(df)[colnames(df) == "Cnew"] <- "C"