0
水平替換因子水平我有一個數據幀df1
與被叫lepsp
和ID
因子和與被叫lepsp_updates
和matchID
因子的第二數據幀df2
。我需要更新df1中的所有lepsp
信息與lepsp_updates
中的df2
。與另一個因素
這將需要覆蓋/替換一些當前的lepsp
或填寫該欄的空白條目。但是,目前lepsp_updates
有NA
許多條目,我不希望NAs替換當前條目lepsp
。這裏是當前數據幀:
df1<- data.frame(ID= seq(1,10, 1),
lepsp= c("A", "B", "", "C", "B", "","", "A", "B" , "C"))
df2<- data.frame(matchID= c("2","3", "8"),
lepsp_updates= c("C", "E", "B"))
輸出將如下所示:對於ID 2 B
output<- data.frame(ID= seq(1,10, 1),
lepsp= c("A", "C", "E", "C", "B", "","", "B", "B" , "C"))
通知與C和ID3 E的替換替換空白條目。 df1的所有其他原始條目保持不變。
我已經試過的版本:
df1$lepsp<- df2$lepsp_updated[match(df1$ID, df2$matchID)]
或添加一列與更新DF1,然後合併列。
df1 <- transform(df1, lepsp_updated = ifelse(is.na(lepsp_updated),lepsp, lepsp_updated))
但是因素被改變爲數字或數據被覆蓋,只有一個因子水平的數據仍然存在。