我有一个带有三个数字分数变量(新,中,旧)的数据框(df)。 我需要计算新旧之间(Diff1)以及新旧之间(Diff2)的差异分数。 如果中级得分为NA,则两个差异得分都必须为NA。 差异分数将被放入新变量
差异1很容易。 DIFF1 <-新–中 始终给出正确答案。
当(1)存在中分或中分为NA时,差异2可以正常工作。 而最新或最旧的分数也不适用。
当中间分数为NA且存在最早的分数和最新的分数时,差异2始终为数字。 我无法使差异2为NA。
我尝试了所有可以想到的变量排列方式(例如df $ New)和方括号,但都没有成功。我也尝试过使用==和=代替<-。我还使用Rcmdr验证了我认为是NA的变量实际上是NA。
数据中
Old Middle New
2483 NA 585
代码
Ifelse (is.na(df[,"Middle"]),
(df[,"Diff2"] <- NA ),
(df[,"Diff2"] <- with(df,New - Old)))
实际输出数据
Diff1(New – Middle) Diff2(New – Old)
NA -1898
所需的输出数据
Diff1(New – Middle) Diff2(New – Old)
NA NA
答案 0 :(得分:0)
我们可以将ifelse
中的代码更改为
df$Diff2 <- with(df, ifelse(is.na(Middle), NA_real_, New - Old))
请注意,<-
中的作业(ifelse
)被替换(无效)为单个作业