我有 2 個資料框:
df1 = data.frame(Bird_ID = c(1:6), Sex = c("Male","Female","Male","Male","Male","UNK"), Age.years =c("2","4","8","2","12","1"))
df2 = data.frame(Bird_ID = c(7), Sex = c("Female"), date.fledged= c("19/10/2021"))
df1
# Bird_ID Sex Age.years
# 1 Male 2
# 2 Female 4
# 3 Male 8
# 4 Male 2
# 5 Male 12
# 6 UNK 1
df2
# Bird_ID Sex Date.fledged
# 7 Female 19/10/2021
- 我的第一個資料框 (
df1) 是我的資料庫,其中包含我所有的鳥類記錄以及有用的資訊 - 我的第二個資料框 (
df2) 是“更新程式”。我想將這些資訊合并到主資料庫 (df1) 中,輸出將如下所示:
dfmerged = data.frame(Bird_ID = c(1:7), Sex = c("Male","Female","Male","Male","Male","UNK","Female"), Age.years =c("2","4","8","2","12","1",NA))`
dfmerged
# Bird_ID Sex Age.years
# 1 Male 2
# 2 Female 4
# 3 Male 8
# 4 Male 2
# 5 Male 12
# 6 UNK 1
# 7 Female NA
如何df1使用來自df2并保留主資料庫中的(和所有)列的資訊更新鳥類資料庫df1?例如,這里dfmerged只保留來自 的列,從df1中洗掉“Date.fledged”列,df2而鳥 7 的 NA 為“Age.years”,因為資料丟失(這是想要的輸出)。
uj5u.com熱心網友回復:
你可以用
library(dplyr)
df1 %>%
bind_rows(df2) %>%
select(names(df1))
這回傳
Bird_ID Sex Age.years
1 1 Male 2
2 2 Female 4
3 3 Male 8
4 4 Male 2
5 5 Male 12
6 6 UNK 1
7 7 Female <NA>
uj5u.com熱心網友回復:
您可以進行完全連接。
merge(df1, df2, by = c('Bird_ID', 'Sex'), all = TRUE)[-4]
# Bird_ID Sex Age.years
#1 1 Male 2
#2 2 Female 4
#3 3 Male 8
#4 4 Male 2
#5 5 Male 12
#6 6 UNK 1
#7 7 Female <NA>
在dplyr-
library(dplyr)
full_join(df1, df2, by = c('Bird_ID', 'Sex')) %>%
select(-date.fledged)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324565.html
