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

如何基于年份将df1的Value.1匹配至df2对应年份?

解决方案

方法一:用left_join(推荐,适配大数据集)

这是处理按列匹配合并的标准方式,比case_when更简洁高效,尤其适合大规模数据集,完全不用手动操作。

library(dplyr)

df1 <- data.frame(Year = c(2000:2002),
                  Value.1 = c(0:2))

df2 <- data.frame(Year = c(2000,2000,2000,2001,2001,2001,2002,2002,2002),
                  Value.2 = c(1:9))

# 按Year列匹配合并
result_df <- df2 %>% 
  left_join(df1, by = "Year")

print(result_df)

运行后输出:

Year Value.2 Value.1
1 2000       1       0
2 2000       2       0
3 2000       3       0
4 2001       4       1
5 2001       5       1
6 2001       6       1
7 2002       7       2
8 2002       8       2
9 2002       9       2

方法二:用mutate + case_when(符合你的推测方向)

如果一定要用这个组合实现,需要逐个年份写判断逻辑,适合年份少的场景:

library(dplyr)

result_df <- df2 %>% 
  mutate(Value.1 = case_when(
    Year == 2000 ~ df1$Value.1[df1$Year == 2000],
    Year == 2001 ~ df1$Value.1[df1$Year == 2001],
    Year == 2002 ~ df1$Value.1[df1$Year == 2002],
    TRUE ~ NA_real_ # 处理未匹配到的年份
  ))

print(result_df)

补充说明

  • left_join会自动批量匹配对应年份的Value.1,不用手动写每个年份的判断,大数据集下性能和可维护性都更好。
  • case_when的方式需要逐个年份定义规则,年份多的时候代码会很冗长,不推荐大规模数据集使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:05:25