R语言如何统计销售购物车各商品出现次数生成新DataFrame
实现方案
方案1:tidyverse 实现(代码易读,适合日常分析场景)
首先加载依赖包:
library(tidyverse)
核心处理代码:
# 拆分购物车字段+统计次数+对齐库存商品 result <- sells %>% # 按分隔符` > `将购物车商品拆分为多行 separate_rows(cart, sep = " > ") %>% # 统计每个商品的总出现次数 count(cart, name = "sales_count") %>% # 关联库存表,确保未产生销售的商品也会被保留(销量为0) right_join(fruits, by = c("cart" = "fruits")) %>% # 调整列名,若需要严格匹配你给出的示例列名(示例列名疑似笔误,可按需调整) rename(fruits = cart) # 如果要严格匹配你给出的示例result的列名,替换上面的rename为: # rename(buyers = cart, cart = sales_count)
运行后得到的结果和你给出的示例数值完全一致:apple对应2次,orange对应3次,grape对应3次。
方案2:base R 实现(无需安装额外依赖)
# 拆分所有购物车商品为一维向量 all_sold_items <- unlist(strsplit(sells$cart, split = " > ")) # 统计商品出现次数 item_counts <- table(all_sold_items) # 对齐库存表生成结果 result <- data.frame( fruits = fruits$fruits, sales_count = as.numeric(item_counts[fruits$fruits]) ) # 同样如果要匹配你给出的示例列名,增加一行: # colnames(result) <- c("buyers", "cart")
内容的提问来源于stack exchange,提问作者bfranc
相关产品推荐
相关产品推荐

