R语言构建节假日预测器Dataframe:代码问题求助
问题解决:为时间戳DataFrame添加布尔型节日/生日列
你的R函数存在ifelse语句使用错误,导致无法正确生成布尔型列,同时可以通过相同逻辑添加圣诞节列。以下是修正后的代码和说明:
错误点说明
原函数里的ifelse(df$MONTH_DAY == "01-09", df$MY_BDAY = 1, df$MY_BDAY = 0)写法有误,ifelse是返回值型函数,不能在分支内直接赋值,需将ifelse的计算结果整体赋值给目标列。
修正后的完整函数
create_dataframe_predictors <- function(df) { # 提取月日部分(自动忽略时分秒) df$MONTH_DAY <- format(as.Date(df$DATE), "%m-%d") # 生成生日布尔列:匹配01-09则为1,否则为0 df$MY_BDAY <- ifelse(df$MONTH_DAY == "01-09", 1, 0) # 生成圣诞节布尔列:匹配12-25则为1,否则为0 df$CHRISTMAS <- ifelse(df$MONTH_DAY == "12-25", 1, 0) return(df) }
测试示例
先构造仅含datetime列的初始数据:
# 构造初始测试DataFrame df <- data.frame( DATE = as.POSIXct(c( "2022-01-01 00:00:00", "2022-01-01 01:00:00", "2022-01-09 00:00:00", "2022-01-09 00:00:00", "2022-12-25 00:00:00", "2022-12-25 01:00:00" )) ) # 调用函数处理数据 df <- create_dataframe_predictors(df)
运行结果
| DATE | MONTH_DAY | MY_BDAY | CHRISTMAS |
|---|---|---|---|
| 2022-01-01 00:00:00 | 01-01 | 0 | 0 |
| 2022-01-01 01:00:00 | 01-01 | 0 | 0 |
| 2022-01-09 00:00:00 | 01-09 | 1 | 0 |
| 2022-01-09 00:00:00 | 01-09 | 1 | 0 |
| 2022-12-25 00:00:00 | 12-25 | 0 | 1 |
| 2022-12-25 01:00:00 | 12-25 | 0 | 1 |
内容的提问来源于stack exchange,提问作者Seniker96
相关产品推荐
相关产品推荐

