如何给仅含月日的时间序列DataFrame添加年份并生成完整日期列
解决方案
方法说明
按照匹配规则:10-12月对应2019年,1-9月对应2020年,通过逻辑判断批量生成年份后再拼接转换为日期即可,无需手动修改数据。
具体实现代码
第一步:生成年份列
# 用ifelse做逻辑判断,month>=10赋值2019,其余赋值2020 df$year <- ifelse(df$month >= 10, 2019, 2020)
第二步:生成标准日期列
# 拼接年、月、日为字符串,再用as.Date转换为日期格式 df$date <- as.Date(paste(df$year, df$month, df$day, sep = "-"), format = "%Y-%m-%d")
更简洁的一步实现方案
如果不需要单独保留年份列,可以直接合并为一步完成:
df$date <- as.Date( paste(ifelse(df$month >= 10, 2019, 2020), df$month, df$day, sep = "-"), format = "%Y-%m-%d" )
注意事项
- R是大小写敏感的,日期转换函数为
as.Date,你之前写的as.date无法被正常识别 as.Date不能直接传入整个数据框作为首个参数,需要传入符合格式的日期字符串/数值序列- 转换日期时
format参数需要用引号包裹,之前的写法遗漏了引号和参数名
内容的提问来源于stack exchange,提问作者Gonzalo de Quesada
相关产品推荐
相关产品推荐

