如何使用日期创建多条件因子变量

时间:2019-03-27 00:07:31

标签: r

我正在尝试使用基于以下两个标准的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'
                                )

                            )
                       )

0 个答案:

没有答案