[英]R combine two data frames by NA
我有一個數據幀(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(),但是我認為這無濟於事。 一如既往地歡迎您的建議:)
非常感謝!
問題是您使用因素。 這應該工作:
X$A <- as.character(X$A)
X$B <- as.character(X$B)
X$A[is.na(X$A)] <- X$B[is.na(X$A)]
如果要避免在修改數據之前使用stringsAsFactors = FALSE
data.frame()
函數將所有內容轉換為因子,請使用stringsAsFactors = FALSE
選項。 例如: data.frame(apply(X, 2, as.character), stringsAsFactors = F)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.