如何在R中基于公共列向DataFrame添加日期列
解决DataFrame按公共列匹配填充日期的问题
你需要将days_IAMS2023中的fldDateTimeShot列,依据公共列fldCruiseStationNumber匹配后,填充到catch数据框的对应行中。由于两个数据框行数不同,**左连接(left join)**是最合适的方案——它会保留catch的所有行,并将匹配到的日期自动填充到对应站点的每一行。
方法一:使用dplyr包的left_join
先安装并加载dplyr包(首次使用需安装):
install.packages("dplyr") library(dplyr)
执行左连接操作:
catch_with_date <- left_join(catch, days_IAMS2023, by = "fldCruiseStationNumber")
说明:
left_join以catch为基准数据框,通过fldCruiseStationNumber匹配days_IAMS2023中的日期数据,每个站点对应的日期会自动填充到catch中该站点的所有行;若存在无匹配的站点,对应日期列会填充NA。
方法二:使用base R的merge函数
无需额外安装包,直接使用内置的merge函数:
catch_with_date <- merge(catch, days_IAMS2023, by = "fldCruiseStationNumber", all.x = TRUE)
说明:
all.x = TRUE参数指定保留catch的所有行,实现和left_join完全一致的效果,匹配到的日期会自动填充到对应行。
验证结果
可以查看结果的前几行,确认日期是否正确填充:
head(catch_with_date)
内容的提问来源于stack exchange,提问作者Cláudio Siva
相关产品推荐
相关产品推荐

