好吧,我有两个数据框,出于我的问题,我将使用伪数据
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列的数据框,因此需要一些帮助来理解为什么合并不能正确进行。在此之前,我从来没有必须合并过这些类型不均匀的数据框,所以为什么要为此苦苦挣扎。
谢谢
答案 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)