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

R语言如何对数据框分组生成标记年份存在的Yes/No逻辑列

实现代码

你可以借助tidyverse套件中的dplyr+tidyr工具实现需求,完整代码如下:

# 加载依赖包,也可以分别加载dplyr和tidyr
library(tidyverse)

# 你的原始数据构造代码
df <- data.frame(id=1,year=c(2012:2018))
df <- rbind(df, data.frame(id=2,year=c(2012:2015)))
df <- rbind(df, data.frame(id=3,year=c(2015:2018)))

# 核心逻辑代码
df %>%
  # 按id分组统计记录数,同时给存在的年份打标记
  group_by(id) %>%
  mutate(
    n = n(),
    exist_tag = "Yes"
  ) %>%
  ungroup() %>%
  # 长表转宽表,年份转为列名,空值填充为空白
  pivot_wider(
    id_cols = c(id, n),
    names_from = year,
    values_from = exist_tag,
    names_prefix = "yr_",
    values_fill = ""
  ) %>%
  # 按id排序
  arrange(id)

代码逻辑说明

  • 首先按id分组,用mutate生成每个id对应的总记录数n,同时给每一行打存在标记Yes,代表对应id存在该年份的记录
  • 用pivot_wider将长格式数据转为宽格式,把年份值转为列名并统一加yr_前缀,不存在的年份对应值填充为空白字符串
  • 最后按id排序即可得到你需要的目标结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:30:04