我正在尝试使用基于以下两个标准的2级因子变量 bu_flag 分为 Baseline 和 Uplift 来对单个事件进行分类与每个事件相关的两个日期:Created.Date和Response.Day。这两个字段都是日期数据类型,格式为%Y-%m-%d。
提升包括以下内容:
year(Response.Day)=年(创建日期)&month(Response.Day)=月(创建日期)|| month(Response.Day)= month(Created.Date)+ 1 || month(Response.Day)= month(Created.Date)-1
year(Response.Day)= year(Created.Date)+ 1&month(Response.Day)= 1 && month(Create.Date)= 12
基准包括以下内容:
year(Response.Day)= year(Created.Date)&month(Response.Day)-month(Created.Date)> 1
我曾尝试使用lubricate的ifelse()和dplyr的if_else()创建嵌套的ifelse,但是我认为我在逻辑运算符语法和/或输入/输出数据类型方面达不到要求(没有双关语)。当前,当应该根据标准将这两个级别混合使用时,代码仅使用 Baseline 估算bu_flag。
这就是我给dplyr的东西。在阅读了if_else对数据类型的严格要求(未显示)之后,我尝试将输出级别强制为mdy(),但是返回了以下错误:
Error: `false` must be length 1 (length of `condition`), not 23286
Call `rlang::last_error()` to see a backtrace
In addition: Warning messages:
1: All formats failed to parse. No formats found.
2: All formats failed to parse. No formats found.
data$bu_flag <- factor(if_else(
year(data$Created.Date) > year(data$Response.Day) && month(data$Created.Date) == 1 && month(data$Response.Day) == 12,
'Uplift',
ifelse(
year(data$Created.Date) == year(data$Response.Day) && month(data$Created.Date) == month(data$Response.Day) |
year(data$Created.Date) == year(data$Response.Day) && month(data$Created.Date) == month(data$Response.Day) + 1 |
year(data$Created.Date) == year(data$Response.Day) && month(data$Created.Date) == month(data$Response.Day) - 1,
'Uplift','Baseline'
)
)
)