簡體   English   中英

R通過NA合並兩個數據幀

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM