You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:如何从大型非规整数据集按年提取毛衣可用颜色

按年份提取毛衣可用颜色的简洁方案

核心逻辑

你的数据结构是颜色条目对应最近提及的服饰,只需先给每个颜色匹配所属的服饰,再筛选毛衣对应的颜色,最后按年份去重汇总即可,无需手动固定提取条目数量。

代码实现(基于你的模拟数据)

set.seed(1)
col_1 <- c(rep(c(1888:1891), each = 50), rep(c(1892:1895), each = 30))
a <- c('shirt', 'blue', 'red', 'green', 'pants', 'blue', 'red', 'green', 'yellow', 'sweater', 'black', 'orange', 'purple')
b <- rep(a, 30)
col_2 <- b[c(1:320)]
df <- data.frame(col_1, col_2)

# 1. 定义所有服饰的列表(真实数据中根据实际服饰名称调整)
clothes_list <- c('shirt', 'pants', 'sweater')

# 2. 给每个条目标记所属的服饰组:每次出现新服饰则开启新组,组名为该服饰
df$cloth_group <- with(df, ave(col_2, cumsum(col_2 %in% clothes_list), FUN = function(x) x[1]))

# 3. 筛选出属于毛衣的颜色条目(排除毛衣本身的行)
sweater_color_data <- df[df$cloth_group == 'sweater' & !df$col_2 %in% clothes_list, ]

# 4. 按年份聚合,得到每年不重复的毛衣颜色
yearly_sweater_colors <- aggregate(col_2 ~ col_1, data = sweater_color_data, FUN = function(x) unique(sort(x)))

# 查看结果
print(yearly_sweater_colors)

适配真实数据集的调整

  • 月度转年度:如果真实数据是月度日期(如yyyy-mm格式),先提取年份:
    df$year <- format(as.Date(df$month_column, "%Y-%m"), "%Y")
    
    之后将聚合的col_1替换为year即可。
  • 服饰种类更多:只需更新clothes_list,把所有服饰名称加入,分组逻辑不受影响。
  • 颜色随机增减:unique()会自动去重,确保每年只保留出现过的颜色,不管月度变动。

优势

无需手动估算提取条目数量,完全基于数据本身的服饰-颜色关联逻辑自动匹配,即使每年毛衣多次出现,也能一次性汇总所有对应颜色,大幅减少整理工作量。

内容的提问来源于stack exchange,提问作者Ben Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:50:23