r - 用嵌套的 ifelse 替换数据框中的值
问题描述
我需要根据条件替换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 或其他解决方案吗?
解决方案
正如 tmrlvi 发布的那样,答案是将 == 替换为 %in%,因为如果数据集中有 NA 语句,它就不会像假装的那样工作。
for (i in 1:nrow(DS)){
if (DS$Date1[i] %in% DS$Date2[i]){
DS$Time2[i] <- DS$Time1[i]
}else if (DS$Date3[i] %in% DS$Date2[i]) {
DS$Time2[i] <- DS$Time3[i]
}else if (DS$Date4[i] %in% DS$Date2[i]) {
DS$Time2[i] <- DS$Time4[i]
}else {
DS$Date1[i] <- DS$Date2[i]
}
}
推荐阅读
- html - 波兰语字符有不同的权重
- php - 巧妙地解析 PHP 日期时间
- javascript - 用相似的子对象解构 JS 对象
- loops - 在 Ada 中的第一个索引之后开始的数组循环?
- php - 数组值自动增加一个设定值(例如,如果第一个是 echo $myarray[5];下一个是 echo $myarray[5+5];所以真的是 $myarray[10];)
- sql - 无法在 phpmyadmin 中显示空值,对我做错了什么有任何解释吗?
- python - Flask/Dash CSV/Excel 文件下载/输出对于不同实例中的每个用户不是唯一的
- python - 减少字符串上的冗余条件列表
- mysql - 在一个Mysql表中添加多个FK
- angular - 共享 Angular 上的 PhpStorm 和智能感知问题 - Nativescript 项目