這個問題在這里已經有了答案: 如何加入(合并)資料框(內、外、左、右) (13 個回答) 使用另一個資料框的匹配值將新列添加到資料框 [重復] (3 個答案) 20 小時前關閉。
嗨,我有兩個資料框。一個缺少資料,我想從另一個具有完整資料的資料框中添加。
這是第一個包含完整資料的資料幀。
| ID | 姓名 | 年齡 |
|---|---|---|
| 012 | 戴夫 | 45 |
| 013 | 科林 | 63 |
| 014 | 戴夫 | 52 |
這是我想與第一個資料庫連接的第二個資料庫,并使用 name 和 age 列從第一個資料庫中獲取 ID。
| ID | 姓名 | 年齡 |
|---|---|---|
| 戴夫 | 45 | |
| 科林 | 63 | |
| 戴夫 | 52 |
uj5u.com熱心網友回復:
這是您問題的一種解決方案:
library(dplyr)
my_df1 <- data.frame("ID" = c("012", "013", "014"),
"Name" = c("Dave", "Collin", "Dave"),
"Age" = c(45, 63, 52),
stringsAsFactors = FALSE)
my_df2 <- data.frame("Name" = c("Dave", "Collin", "Dave"),
"Age"= c(45, 63, 52),
stringsAsFactors = FALSE)
my_df3 <- left_join(my_df2, my_df1, by = c("Name", "Age"))
uj5u.com熱心網友回復:
這也有效:
ID <- c("012", "013", "014")
Name <- c("Dave", "Colin", "Dave")
Age <- c(45, 63, 52)
df1 <- data.frame(ID, Name, Age)
df2 <- data.frame(Name, Age)
newtable <- merge(df1, df2, by = c("Name", "Age"))
uj5u.com熱心網友回復:
取兩個資料集:
df1 <- data.frame(Name=c("Andy", "Henry", "Tom", "Andy", "Martin"),
Age =c(55, 46, 32, 38, 61),
ID =c(1:5))
df2 <- data.frame(Name=c("Andy", "Henry", "Tom", "Andy", "Alex"),
Age =c(55, 46, 32, 38, 24))
根據您要對缺失的觀察進行的操作,您可以執行以下四種不同的合并:
merge(df1, df2, on=c("Name", "Age"))
merge(df1, df2, on=c("Name", "Age"), all.x=TRUE)
merge(df1, df2, on=c("Name", "Age"), all.y=TRUE)
merge(df1, df2, on=c("Name", "Age"), all=TRUE)
或者,您可以使用 data.table 連接:
data.table(df1)[data.table(df2), on=c("Name", "Age")]
更正確的是:
setDT(df1)
setDT(df2)
setkey(df1, "Name", "Age")
setkey(df2, "Name", "Age")
df1[df2]
uj5u.com熱心網友回復:
library(dplyr)
my_df1 <- data.frame("ID" = c("012", "013", "014"),
"Name" = c("Dave", "Collin", "Dave"),
"Age" = c(45, 63, 52),
stringsAsFactors = FALSE)
my_df2 <- data.frame("Name" = c("Dave", "Collin", "Dave"),
"Age"= c(45, 63, 52),
stringsAsFactors = FALSE)
您可以使用 merge()
my_df3 <- merge(df2, df1, by = c("Name", "Age"))
my_df3
或者您可以使用rbind.fill()先將不同的資料框合并為一個,然后再洗掉丟失的NA's
df3<-rbind.fill(df1, df2)
drop_na(df3) #drop NA's
ID Name Age
1 012 Dave 45
2 013 Collin 63
3 014 Dave 52
4 <NA> Dave 45
5 <NA> Collin 63
6 <NA> Dave 52
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372321.html
