我合并了两个数据表。结果我有两个因子列model
(使用自定义后缀 - model.p
和model.a
)。现在,如果model.a
列为空(即等于model.p
)且model.p
值不为{,则我希望将NA
值移至model.a
列{1}}。
以下是我的尝试:
NA
看起来我做错了(不喜欢第(1)行 - 我应该给两次相同的条件吗?)。有什么方法可以简化吗?
答案 0 :(得分:2)
你可以这样做:
dt13$model.p = with(dt13, ifelse(is.na(model.p) & !is.na(model.a), model.a, model.p)
答案 1 :(得分:0)
我在data.table
标记上看到了这个问题,您也使用了setnames
这是data.table函数。因此,留下一个data.table解决方案,非常简单。
library(data.table)
DT1 <- as.data.table(dt1)[, model := as.character(model)]
DT3 <- as.data.table(dt3)[, model := as.character(model)]
setkeyv(DT1, c("number", "ddate"))
setkeyv(DT3, c("number", "ddate"))
DT1[DT3, `:=`(model_id = i.model_id, model = ifelse(is.na(model),i.model,model))][]
# or d ddate rdate changes class price fdate company number minutes model added source model_id
# 1: VA1 VA2 2014-06-05 NA 0 0 2124 2014-05-22 15:48:24 NA NA NA NA 2014-05-22 12:20:03 s1 NA
# 2: VA1 VA2 2014-06-09 NA 0 0 2124 2014-05-22 15:37:35 NA NA NA NA 2014-05-22 12:20:03 s2 NA
# 3: VA1 VA2 2014-06-16 NA 0 0 2124 2014-05-22 14:17:33 NA NA NA NA 2014-05-22 12:20:03 ss NA
# 4: VA1 VA2 2014-05-26 NA 0 0 2124 2014-05-22 15:03:44 NA B1234 NA A1 2014-05-22 12:20:03 s1 BA-DVH
# 5: VA1 VA2 2014-05-24 NA 0 0 2124 2014-05-22 15:50:16 NA B3970 NA 320 2014-05-22 12:20:03 ss AB-DVH