【发布时间】:2015-02-17 09:08:19
【问题描述】:
我有一个问题,在我看来很简单,但我无法自己解决。我在 StackOverflow 上搜索过解决方案,估计有人已经解决了,但我还没有找到。
我有一个基于5个数据框合并的数据框,看起来像这样:
id | mag1 | mag2 | mag3
1 | name | name | name
2 | NA | NA | name
3 | NA | name | NA
对于 mag2 和 mag3,总是有一个填充的名称(在 mag1、mag2 和 mag3 中没有带 NA 的行)。我想更改 mag1 的值,使其永远不会为空,并且它采用下一个非空单元格的值。
我曾设想过使用这种代码:
db$mag1[is.na(db$mag1)] <- db$mag2
db$mag1[is.na(db$mag1)] <- db$mag3
使用此代码,在我看来,例如,在第二行中,用 db$mag2 的值替换将使 mag1 保持不变(NA),而用 db$mag3 的替换会将其值更改为“姓名”。如果 mag2 中存在非 NA 值,则不应激活第二行。
现在,这是我得到的错误:
Warning message:
In db$mag[is.na(db$mag1)] <- db$mag2 :
number of items to replace is not a multiple of replacement length
我猜我的代码行中有一个非常简单的错误,但我没有设法看到它。有什么想法吗?
【问题讨论】: