r - 如何使用 R 在合并中的两个观察中使用来自一个观察的数据?
问题描述
我想合并两个表,但我需要用 x 名称填充一个观察的数据,用 y 名称(类似)来自另一个观察的信息。
oem <- c("BMW_", "BMW", "Honda", "Toyota", "Ford", "Audi")
> units <- c(215, 43, 324, 313, 350, 90)
> sales <- tibble(oem, units)
> sales
# A tibble: 6 x 2
oem units
<chr> <dbl>
1 BMW_ 215
2 BMW 43
3 Honda 324
4 Toyota 313
5 Ford 350
6 Audi 90
>
> oem2 <- c("BMW", "Honda", "Toyota", "Ford", "Audi")
> point_sales <- c(121, 231, 145, 132, 183)
> ps <- tibble(oem2,point_sales)
> variables <- c("oem", "point_sales")
> names(ps) = variables
> ps
# A tibble: 5 x 2
oem point_sales
<chr> <dbl>
1 BMW 121
2 Honda 231
3 Toyota 145
4 Ford 132
5 Audi 183
>
>
> base <- merge(sales,ps, by = "oem", all = TRUE)
> base
oem units point_sales
1 Audi 90 183
2 BMW 43 121
3 BMW_ 215 NA
4 Ford 350 132
5 Honda 324 231
6 Toyota 313 145
我需要用“ps”的“BMW”(“point_sales”)中的信息填充我的“BMW_”行,因此,这意味着“BMW”的“ps”中的数据将针对“BMW”重复以及“BMW_”,避免“point_sales”列中的 NA。
我是新手,所以我考虑手动复制和粘贴数据,但我想知道根据 R 是否有另一种更“优雅”或更多的方法。
解决方案
stringdist_inner_join
您可以从fuzzyjoin
包装中尝试。
fuzzyjoin::stringdist_inner_join(sales, ps, by = 'oem')
# oem.x units oem.y point_sales
# <chr> <dbl> <chr> <dbl>
#1 BMW_ 215 BMW 121
#2 BMW 43 BMW 121
#3 Honda 324 Honda 231
#4 Toyota 313 Toyota 145
#5 Ford 350 Ford 132
#6 Audi 90 Audi 183
推荐阅读
- javascript - JS:Facebook 登录:如何从不同的页面调用 FB.logout()?
- azure - 为什么不能通过 Azure 的 API 获得数据
- python - 本地化:django-admin compilemessages skip venv
- gradle - 使用 Kotlin 实现插件时如何为 Gradle 扩展任务?
- python - json文件中布尔数据类型的反序列化在python中不起作用
- c++ - 将 lambda 传递给可变参数 std::function 时的类型推导
- laravel - 在运行时在集合上添加属性追加
- android - 签名的 React Native 应用程序未正确加载资产
- android - React-Native:如何使用模糊创建 UI
- botframework - Microsoft 签名密钥不再有背书