【问题标题】:Find the corresponding pricelist from a named vector based on a price根据价格从命名向量中找到对应的价目表
【发布时间】:2022-12-15 22:58:07
【问题描述】:

给定一个由单价和相关价目表名称组成的命名向量,我想编写一个函数,向我的数据集添加一个新列,该列应该说明数据集中的价格属于哪个价目表。

该函数应该能够处理缺失值(NA 和价格不包括在价目表中)以及价目表中的重复条目。对于(NA 和价格不包括在价目表中)类似“未找到”的东西是完全可以的,对于重复的条目,我会采用第一个条目

pricelist = rlang::set_names(
  x = c(11.12, 11.45, 14.45, 12.66, 12.96, 14.45),
  nm = c("1", "2", "3", "4", "5", "6"))

data = tibble(
  article = rep("article 34", 10), 
  price = c(11.12, NA, 11.45, 11.45, 11.45, 14.45, NA, 20, 12.96, 12.66)) 

所需的输出如下所示:

data %>%
  mutate(pricelist = pricelist_fn(price = price))

# A tibble: 10 x 3
   article    price pricelist
   <chr>      <dbl> <chr>    
 1 article 34  11.1 1        
 2 article 34  NA   not found
 3 article 34  11.4 2        
 4 article 34  11.4 2        
 5 article 34  11.4 2        
 6 article 34  14.4 3        
 7 article 34  NA   not found
 8 article 34  20   not found
 9 article 34  13.0 5        
10 article 34  12.7 4 

【问题讨论】:

    标签: r


    【解决方案1】:
    data %>%
      mutate(result = names(pricelist)[match(price, pricelist)])
    # # A tibble: 10 × 3
    #    article    price result
    #    <chr>      <dbl> <chr>  
    #  1 article 34  11.1 1      
    #  2 article 34  NA   NA     
    #  3 article 34  11.4 2      
    #  4 article 34  11.4 2      
    #  5 article 34  11.4 2      
    #  6 article 34  14.4 3      
    #  7 article 34  NA   NA     
    #  8 article 34  20   NA     
    #  9 article 34  13.0 5      
    # 10 article 34  12.7 4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 2020-12-16
      相关资源
      最近更新 更多