我有一个包含两个变量DT和OD的数据帧组合。
我在DT和OD中都有一些缺失值NA,但不需要相同的记录。
然后,如果OD没有丢失,我尝试用OD替换DT中的缺失值但是检索警告“要替换的项目数不是替换长度的倍数”。我可以看到它意味着长度不匹配,但我不明白为什么同一数据帧中的两列可以有不同的长度。更严重的是,输出并不完全正确(见下文)
combi$DT[is.na(combi$DT) & ! is.na(combi$OD) ] <- combi$OD
输出
id DT OD
67 2010-12-12 2010-12-12
68 NA NA
69 NA 2010-12-12
70 NA NA
对于DT
,我希望2010-12-12
为id=69
(日期为POSIXct)。
在数据帧中必须有一些我不了解长度的东西。有人可以帮忙吗?
答案 0 :(得分:8)
因为要替换的项目数不是替换长度的倍数。要替换的项目数是combi
小于ifelse
中的行数(以及替换长度)的行数。
您应该使用combi$DT <- ifelse(is.na(combi$DT) & !is.na(combi$OD), combi$OD, combi$DT)
:
& !is.na(combi$OD)
N.B。 NA
是多余的:如果两者都是NA
,则替换为combi$DT <- ifelse(is.na(combi$DT), combi$OD, combi$DT)
。所以你可以使用
mono ipy.exe script.py
答案 1 :(得分:4)
出现警告是因为您尝试将所有combi$OD
分配到combi$DT
为NA的地方。例如,如果您有100行2个变量和5个NA,那么您告诉它将变量1的5个NA替换为变量2的100个值。因此警告。试试这个,
combi$DT[is.na(combi$DT) & !is.na(combi$OD)] <- combi$OD[is.na(combi$DT) & !is.na(combi$OD)]