簡體   English   中英

如何在 R 中組合來自不同數據幀的兩個變量?

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

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