如何合并具有不同列名的两个数据框

时间:2020-09-30 18:39:43

标签: r dataframe merge

好吧,我有两个数据框,出于我的问题,我将使用伪数据

df1:
Decimal.hour  Temp  Depth   Salinity 
4.1           10     -3        34
4.2           10     -3.2      33
4.5           9      -3.1      33
4.6           9      -3.2      34
4.7           10     -3.3      34
6.2           15     -3.1      32 
6.4           15     -3.2      32
6.6           14     -3        33
6.7           14     -3        32
7.0           11     -3.1      33
7.1           12     -3.1      33     
7.2           12     -3.1      33
7.4           11     -3.3      34

df2:
Decimal.hour  Run   Transect  Site   Phase   Count   Age 
4.1            1       2        1      1       12     1
4.2            1       2        1      1        3     1
4.5            2       1        2      1        4     1     
4.6            2       1        2      1        10    1
4.7            1       2        1      1        5     6
6.6            3       1        1      1        7     2             
6.7            3       1        1      1        2     1
6.8            3       2        2      1        10    1
6.9            3       2        2      1        9     1
7.0            4       1        2      1        2     1
7.1            4       1        2      1        2     1
7.2            4       2        1      1        6     1
7.3            4       2        1      1        5     2

然后我将如何组合这两个数据框以提供以下数据框? (这是我的理想输出)

df3:
Decimal.hour  Temp  Depth   Salinity  Run   Transect  Site   Phase   Count   Age 
4.1           10     -3        34      1       2        1      1       12     1
4.2           10     -3.2      33      1       2        1      1        3     1
4.5           9      -3.1      33      2       1        2      1        4     1 
4.6           9      -3.2      34      2       1        2      1        10    1
4.7           10     -3.3      34      1       2        1      1        5     6
6.2           15     -3.1      32      NA      NA       NA     NA       NA    NA
6.4           15     -3.2      32      NA      NA       NA     NA       NA    NA
6.6           14     -3        33      3       1        1      1        7     2 
6.7           14     -3        32      3       1        1      1        2     1
6.8           NA      NA       NA      3       2        2      1        10    1
6.9           NA      NA       NA      3       2        2      1        9     1
7.0           11     -3.1      33      4       1        2      1        2     1
7.1           12     -3.1      33      4       1        2      1        2     1
7.2           12     -3.1      33      4       2        1      1        6     1
7.3           NA.     NA.      NA      4       2        1      1        5     2
7.4           11     -3.3      34      4       2        1      1        5     2

如您所见,这两个数据帧都具有相同的列(Decimal.hour),所以我正在寻找一种将Decimal.hour值匹配起来然后不匹配的方式来合并它们某些行没有任何数据时,将输入值。

我环顾四周,在这里找到了人们认为可以使用的代码:

dfNew<-dplyr::bind_rows(df1, df2)

但是,它给我的是十进制列合并,但是第二个数据帧仅具有所有NA值。

我也尝试过:

smartbind(df1, df2)

但是它给了我同样的问题,因为df2具有所有NA值。

我想知道是否有人可以帮助我解决这个问题,因为我实际上拥有2160行和df1的4列和485行和df2的36列的数据框,因此需要一些帮助来理解为什么合并不能正确进行。在此之前,我从来没有必须合并过这些类型不均匀的数据框,所以为什么要为此苦苦挣扎。

谢谢

2 个答案:

答案 0 :(得分:0)

library(dplyr)
df3 <- left_join(df1, df2, by="Decimal.hour")

将来可能会有用:https://rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf

答案 1 :(得分:0)

R的基本选项正在使用merge

merge(df1, df2, by="Decimal.hour", all = TRUE)
相关问题