【发布时间】:2021-08-13 13:52:07
【问题描述】:
我在 R 中有两个数据框。一个“参考”框包含我的所有观察结果,另一个额外的数据框包含(大)观察子集的额外数据。我想将两个框架连接在一起,用NA 填充缺失的值。复杂性(使我无法只使用merge/left_join)是观察只能使用几列的组合来唯一标识,但附加数据框仅包含一个标识列。但是,保证两个数据帧的顺序是一样的。
这里有一些最小的示例数据,也说明了问题:
library(tidyverse)
fruit_sizes = tribble(~fruit, ~colour, ~size,
"apple", "red", 5,
"cherry", "red", 2,
"strawberry", "red", 3,
"apple", "green", 6,
"lime", "green", 4,
"apple", "yellow", 5)
fruit_prices = tribble(~fruit, ~price,
"apple", 1.5,
"strawberry", 0.2,
"lime", 2.0,
"apple", 1.3)
# Desired result:
#
# # A tibble: 6 x 4
# fruit colour size price
# <chr> <chr> <dbl> <dbl>
# 1 apple red 5 1.5
# 2 cherry red 2 NA
# 3 strawberry red 3 0.2
# 4 apple green 6 NA
# 5 lime green 4 2
# 6 apple yellow 5 1.3
(水果由名称和颜色标识,但prices 表缺少颜色信息。但是,两个表的水果顺序相同。)
所以现在我的问题是如何使用第二个表的订单信息将其数据与第一个表对齐/匹配。可以假设不存在模棱两可的情况。 (我在示例和实际数据中使用了 tibbles,但非tidyverse 解决方案也可以。)
【问题讨论】:
标签: r dataframe merge tidyverse