【发布时间】:2020-05-17 13:01:42
【问题描述】:
我需要根据条件替换 data.frame 中的某个值,如下所示:
for (i in 1:nrow(DS)){
if (DS$Date1[i] == DS$Date2[i]){
DS$Time2[i] <- DS$Time1[i]
}else if (DS$Date3[i] == DS$Date2[i]) {
DS$Time2[i] <- DS$Time3[i]
}else if (DS$Date4[i] == DS$Date2[i]) {
DS$Time2[i] <- DS$Time4[i]
}else {
DS$Date1[i] <- DS$Date2[i]
}
}
但 ifelse 条件返回错误: if (condition) { 中的错误:需要 TRUE/FALSE 的缺失值。 你能帮我解决这个嵌套的 ifelse 或其他解决方案吗?
【问题讨论】:
-
嗨!欢迎来到堆栈溢出。如果您包含有关该问题的所有相关信息,这将对我们有所帮助。什么是
DS(data.frame?矩阵?)?错误是什么? -
错误是“如果(条件){ 中的错误:需要 TRUE/FALSE 的缺失值”DS 是一个数据帧
-
你有 NA 吗?在数据中?你想怎么对待他们?请注意,如果您将任何内容与 NA 进行比较,您会得到 NA,而不是 True 或 False 值。
-
是的,数据中有 NA,但对于最终结果并不重要。如果值匹配,我想根据日期替换时间(如前 3 个 ifelse 语句中)。如果不是,我想用另一个日期替换日期,无论是 NA 还是另一个有效值。
-
然后看到这个答案:stackoverflow.com/a/49913644/3051715