【问题标题】:How to Copy the Exact Match From Data B to Data A in r [duplicate]如何在r中将精确匹配从数据B复制到数据A [重复]
【发布时间】:2017-12-14 03:21:44
【问题描述】:

假设我有两个数据框 A 和 B。

一个

 products    price
   apple      3.0
   orange     2.5
   avocado    4.0
   banana     2.5
   blueberry  1.5

B

 products Color  price
 banana   Yellow  NA
 Apple    Red     NA
 Avocado  Green   NA
 Apricot  Yellow  NA

我的问题是从数据 A 中获取产品价格并将其保存在数据 B 中的最快方法是什么,所以结果会是这样的

B

products Color  price
  banana   Yellow  2.5
  Apple    Red     3.0
  Avocado  Green   4.0
  Apricot  Yellow  NA

【问题讨论】:

  • 研究使用merge。不确定这是否是最快的方法。
  • ?merge, dpyr::left_join
  • 如果大小写不同,这些不是“完全匹配”......
  • 不管怎样,除了merge,你还可以看看match,看看是否适合你。也许像B$price <- A$price[match(tolower(B$products), tolower(A$products))] 这样的东西。
  • 谢谢各位,我会尝试合并和匹配功能,但我不知道您如何在这种情况下使用left_join?

标签: r dataframe dplyr stringr stringi


【解决方案1】:

如果 B 和 A 中的产品之间的唯一区别是大写,那么您可以使用以下内容:

A = data.frame(products = c("apple", "orange", "avocado", "banana", "blueberry"),
           price = c(3.0, 2.5, 4.0, 2.5, 1.5))

B = data.frame(products = c("banana", "Apple", "Avocado", "Apricot"),
           color = c("Yellow", "Red", "Green", "Yellow"),
           price = c(NA, NA, NA, NA))

for (i in 1:nrow(B)) {
   B$price[i] =  A$price[match(tolower(B$products[i]), A$products)]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    相关资源
    最近更新 更多