[英]How to combine two variables from different data frames in R?
我是 R 編程的新手,所以這個問題可能很簡單。 無論如何,我試圖找到一些我正在嘗試做的具體事情的答案,但沒有得到它。
所以,我試圖將我擁有的新數據導入到我的舊 data.frame 中。 問題是這些數據必須用已經存在的變量替換以前的 NA 值。 此外,我的數據在不同時期(年份)有不同的個人(公司),而我的新數據集只有缺失的公司和年份,以及我已經擁有的一些觀察結果。
我試圖用下面的數據框模擬問題:
帶有 NA 的數據框:
df1 <- data.frame( company = c(rep("A",3), rep("B",3), rep("C",3)),
year = c(rep(2016:2018,each=1)),
income = c(95,87,93,NA,NA,58,102,80,NA),
debt = c(43,50,51,NA,37,37,53,NA,NA),
stringsAsFactors= F )
為了搜索新數據,我創建了一個僅包含缺失數據的數據集,因為我的數據有很多觀察結果:
df_NA <- data.frame(df1[is.na(df1$income & df1$debt),])
所以在搜索之后,我能夠找到丟失的數據,現在我有這樣的東西:
df2 <- data.frame( company = c("A", "B" , "C" , "C"),
year = c(2018, 2016, 2017, 2018),
income = c(60,55, 80, 82),
debt = c(32,37, 53,48),
stringsAsFactors= F )
現在,我正在嘗試將這些數據放在一起,所以我有完整的 data.frame 可以工作。
問題是我還沒有找到辦法。 我嘗試過合並和加入,為公司和年份編制索引,但是在 data.frame 中具有相同名稱的變量會被重復和后綴。
在我的數據中,我有更多的觀察和變量要填充,所以我想找到一種可以通過命令完成的方法。 這也將在未來再次發生,所以這將非常有幫助。
如果這已經被回答,我很抱歉。 謝謝!
這是使用data.table
的選項:
library(data.table)
setDT(df1)
setDT(df2)
df1[df2, on=c("company", "year"), c('income', 'debt') := { list(i.income, i.debt)}]
# company year income debt
#1: A 2016 95 43
#2: A 2017 87 50
#3: A 2018 60 32
#4: B 2016 55 37
#5: B 2017 NA 37
#6: B 2018 58 37
#7: C 2016 102 53
#8: C 2017 80 53
#9: C 2018 82 48
或使用dplyr
另一個選項
library(dplyr)
full_join(df1, df2, by = c("year", "company")) %>%
mutate(
income = coalesce(income.x, income.y),
debt= coalesce(debt.x, debt.y),
) %>%
select(company, year, income, debt)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.