假设我想用dplyr连接这3个 Dataframe ,我该怎么做呢?我知道我应该使用一些数据透视和连接的组合,但是我不知道怎么做才对。
我的目标是让df像这样:
mpg_deciles mean_mpg mean_price production coefficient
1 13.5 12990 Foreign 12990
2 16 10874 Domestic 10874.8571428572
这是数据
library(dplyr)
a <- tibble::tribble(
~mpg_deciles, ~mean_mpg,
1L, 13.5,
2L, 16,
3L, 17.75,
4L, 18.625,
5L, 19.7142857142857)
b <- tibble::tribble(
~coeff_foreign, ~mpg_deciles, ~mean_p_foreign, ~foreign,
12990, 2, 12990, "Foreign",
-2147.49999999997, 3, 10842.5, "Foreign",
-7180.99999999996, 4, 5809.00000000003, "Foreign",
-6777.49999999999, 6, 6212.5, "Foreign",
-6435.3333333333, 7, 6554.66666666669, "Foreign")
c <- tibble::tribble(
~coeff_domestic, ~mpg_deciles, ~mean_p_domestic, ~foreign,
10874.8571428572, 1L, 10874.8571428572, "Domestic",
-3697.73214285716, 2L, 7177.125, "Domestic",
-6031.19047619049, 3L, 4843.66666666666, "Domestic",
-6365.35714285716, 4L, 4509.5, "Domestic",
-4650.42857142859, 5L, 6224.42857142857, "Domestic")
2条答案
按热度按时间41ik7eoe1#
我认为您需要对
b
和c
进行预处理,然后使用left_join
:这将返回
预处理会更改
coeff_foreign
和coeff_domestic
(对于mean_p_
相同)列转换为相同名称的列。如果现在两个 Dataframe 彼此附加,具有相同列名的所有值将进入各自的(相同)列。如果不进行此预处理,则将使用不同名称的列(例如coeff_foreign
和coeff_domestic
)不会在同一列中结束,但会创建两列(coeff_foreign
和coeff_domestic
)来存储这些值。在这种情况下,left_join
不会获得所需的结果。ifsvaxew2#
更新版本:感谢@Martin Gal的意见:
我们可以使用嵌套的
left_join
: