【发布时间】:2014-02-14 10:58:58
【问题描述】:
我有一个数据框 (DF),并且喜欢通过将第一列中的 NA 替换为第二列中的值来组合第一列中的两列。这是一个示例 DF:
structure(list(A = structure(c(3L, 5L, 4L, 2L, 1L, NA, NA, NA,
NA, NA), .Label = c("five", "four", "one", "three", "two"), class = "factor"),
B = structure(c(4L, NA, NA, 2L, NA, 6L, 5L, 1L, 3L, 7L), .Label = c("eight",
"four", "nine", "one", "seven", "six", "ten"), class = "factor")), .Names = c("A",
"B"), row.names = c(NA, -10L), class = "data.frame")
如您所见,DF 在两列中包含从 1 到 10 的数字。
我希望将 A 列中的 NA 替换为 B 列中的值。但只有 A 的 NA!
我试过了:
X$A[is.na(X$A)] <- X$B[is.na(X$A)]
但这给了我一个无效的因子级别错误警告。
我发现的解决方案主要处理 merge() 或 paste(),但我认为这在这里没有帮助。欢迎您的建议,一如既往:)
非常感谢!
【问题讨论】:
-
是否必须有因子而不是字符?
-
不,不是。应该对此进行测试。对不起。