gpt4 book ai didi

r - 为什么我得到“要更换的元素数量不是更换长度的倍数”

转载 作者:行者123 更新时间:2023-12-03 11:29:21 24 4
gpt4 key购买 nike

我有一个包含两个变量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-12id=69(日期是POSIXct)。

我一定对数据帧的长度有些不了解。有人可以帮忙吗?

最佳答案

因为要替换的项目数不是替换长度的倍数。要替换的项目数是is.na(combi$DT) & !is.na(combi$OD)的行数,该行数小于combi中的行数(因此,替换的长度)。

您应该使用ifelse

combi$DT <- ifelse(is.na(combi$DT) & !is.na(combi$OD), combi$OD, combi$DT)


N.B. & !is.na(combi$OD)是多余的:如果两个都是 NA,则替换为 NA。所以你可以用

combi$DT <- ifelse(is.na(combi$DT), combi$OD, combi$DT)

关于r - 为什么我得到“要更换的元素数量不是更换长度的倍数”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38738347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com