在R中为仅含月日的日期列添加年份,并用lubridate获取星期
补全年份并生成星期列的解决方案
1. 补全年份(两种实现方式)
先给date列拼接年份后缀,同时转为日期格式,方便后续lubridate操作:
Base R 写法
# 构造你的示例数据 df <- data.frame( date = c("11/08", "11/08", "11/08", "11/08", "11/08", "11/08"), time = c("09:00", "10:00", "11:00", "12:00", "13:00", "14:00"), sales = c("84.15", "503.08", "674.25", "596.75", "338.05", "343.35") ) # 拼接年份并转为日期格式 df$date <- as.Date(paste0(df$date, "/2022"), format = "%m/%d/%Y")
dplyr 管道写法(更简洁)
library(dplyr) df <- df %>% mutate(date = as.Date(paste0(date, "/2022"), format = "%m/%d/%Y"))
2. 用lubridate生成星期列
转成日期格式后,直接用wday()函数提取星期,支持数字或文字标签:
library(lubridate) # 生成数字型星期(1=周日,7=周六) df$weekday_num <- wday(df$date) # 生成中文完整星期名称(如"星期二") df$weekday <- wday(df$date, label = TRUE, abbr = FALSE, locale = "zh_CN.UTF-8") # 若需要英文缩写,去掉locale参数即可: # df$weekday <- wday(df$date, label = TRUE, abbr = TRUE)
处理后的数据会包含带年份的日期列,以及对应的星期列,完全满足你的需求。
内容的提问来源于stack exchange,提问作者highfocus
相关产品推荐
相关产品推荐

