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

在R中生成虚拟变量:判断主数据框年份是否存在于其他数据框

给主数据框添加事件标记列的实现方法

不用写for循环,R里有更简洁高效的向量操作方式就能完成需求,以下是两种常用方法:

基础R实现

利用%in%运算符判断年份是否存在于事件B/C的年份列表中,再将逻辑值转为0/1整数:

# 为main_df添加Event B标记列
main_df$`Event B` <- as.integer(main_df$year_eventA %in% df1$year_eventB)
# 为main_df添加Event C标记列
main_df$`Event C` <- as.integer(main_df$year_eventA %in% df2$year_eventC)
  • %in%会生成一个逻辑向量,每个元素对应main_df的年份是否出现在对应事件的年份里
  • as.integer()将TRUE转为1,FALSE转为0,正好符合0/1标记的需求

tidyverse风格实现(适配Python转R的习惯)

如果你习惯类似pandas的链式操作,可以用dplyr包的mutate()函数:

library(dplyr)

main_df <- main_df %>%
  mutate(
    `Event B` = as.integer(year_eventA %in% df1$year_eventB),
    `Event C` = as.integer(year_eventA %in% df2$year_eventC)
  )

运行上述任意一种方法后,查看main_df就能得到目标结果:

year_eventAEvent BEvent C
199501
199600
199710
199800
199910

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:54:47