使用下面提供的示例,我需要使用具有以下条件的if else语句:
示例数据:
df <- data.frame(
original = c(20,40,20,2,20,10,12),
corrected = c(25,43,22,1,25,7,NA),
flag = c(0,0,0,1,1,1,NA))
输出应附加到df(df $ final),并且对于此示例应该输出:
df$final = c(25,43,22,2,25,10,12)
感谢您的任何建议。
答案 0 :(得分:1)
虽然它不是地球上效率最高的代码,但您可以使用嵌套的ifelse
:
df$final <- with(df, ifelse(is.na(flag), original,
ifelse(flag, pmax(original, corrected), corrected)))
df
# original corrected flag final
#1 20 25 0 25
#2 40 43 0 43
#3 20 22 0 22
#4 2 1 1 2
#5 20 25 1 25
#6 10 7 1 10
#7 12 NA NA 12
您可以利用flag可以解释为逻辑值的事实。