【发布时间】:2021-01-16 11:51:30
【问题描述】:
好的,我有两个数据框,出于我的问题的目的,我将使用虚拟数据
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 值匹配,然后 NA当某些行没有任何数据时,将输入值。
我环顾四周,发现这里有人说可以工作的代码:
dfNew<-dplyr::bind_rows(df1, df2)
然而,它给我的是十进制列合并,但第二个数据框只有所有 NA 值。
我也试过了:
smartbind(df1, df2)
但它给了我同样的问题,df2 具有所有 NA 值。
我想知道是否有人可以帮助我解决这个问题,因为我实际拥有的数据框对于 df1 有 2160 行和 4 列,对于 df2 有 485 行和 36 列,所以需要一些帮助来理解为什么我的合并是'不正确。我从来没有必要合并这些类型的不均匀数据帧,因此我为什么要苦苦挣扎。
谢谢
【问题讨论】: