R 当介于
我想加入两个数据集,如果日期介于StartDate和EndDate之间,则加入第一个数据集,1作为coulmn names pros_sales添加。下面是我的数据集R 当介于,r,dplyr,R,Dplyr,我想加入两个数据集,如果日期介于StartDate和EndDate之间,则加入第一个数据集,1作为coulmn names pros_sales添加。下面是我的数据集 data1=data.frame(Date=as.Date("2015-06-28"),Storecode=34) data2=data.frame(Promo=c("Promo1","Promo2","Promo3","Promo4") ,StartDate=c("2015-02-10","2015-03-15"," 2015-
data1=data.frame(Date=as.Date("2015-06-28"),Storecode=34)
data2=data.frame(Promo=c("Promo1","Promo2","Promo3","Promo4")
,StartDate=c("2015-02-10","2015-03-15"," 2015-05-24","2015-06-21")
,EndDate=c("2015-02-17","2015-03-22","2015-06-01","2015-06-28"))
data1$Date <- as.Date(data1$Date)
data2$StartDate <- as.Date(data2$StartDate)
data2$EndDate <- as.Date(data2$EndDate)
下面是我的代码,但它为所有pro_销售增加了1
data.frame( data1 %>%
mutate(dummy=TRUE) %>%
left_join(data2 %>% mutate(dummy=TRUE)) %>%
mutate(pro_sales = case_when(
Date>=StartDate | Date<=EndDate ~ 1,
FALSE ~ 0)))
data.frame(数据1%>%
变异(虚拟=真)%>%
左联合(数据2%>%mutate(dummy=TRUE))%>%
变异(专业销售=案例销售)(
这个怎么样
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
data1=data.frame(Date=as.Date("2015-06-28"), Storecode=34, tmp = 1)
data2=data.frame(Promo=c("Promo1","Promo2","Promo3","Promo4"),
StartDate=c("2015-02-10","2015-03-15"," 2015-05-24","2015-06-21"),
EndDate=c("2015-02-17","2015-03-22","2015-06-01","2015-06-28"),
tmp = 1)
data1$Date <- as.Date(data1$Date)
data2$StartDate <- as.Date(data2$StartDate)
data2$EndDate <- as.Date(data2$EndDate)
full_join(data1, data2, by = "tmp") %>%
select(-tmp) %>%
mutate(pro_sales = case_when(
Date>=StartDate & Date<=EndDate ~ 1,
TRUE ~ 0))
#> Date Storecode Promo StartDate EndDate pro_sales
#> 1 2015-06-28 34 Promo1 2015-02-10 2015-02-17 0
#> 2 2015-06-28 34 Promo2 2015-03-15 2015-03-22 0
#> 3 2015-06-28 34 Promo3 2015-05-24 2015-06-01 0
#> 4 2015-06-28 34 Promo4 2015-06-21 2015-06-28 1
库(dplyr)
#>
#>正在附加包:“dplyr”
#>以下对象已从“package:stats”屏蔽:
#>
#>滤波器,滞后
#>以下对象已从“package:base”屏蔽:
#>
#>相交、setdiff、setequal、并集
数据1=数据帧(日期=截止日期(“2015-06-28”),存储代码=34,tmp=1)
data2=data.frame(Promo=c(“Promo1”、“Promo2”、“Promo3”、“Promo4”),
StartDate=c(“2015-02-10”、“2015-03-15”、“2015-05-24”、“2015-06-21”),
EndDate=c(“2015-02-17”、“2015-03-22”、“2015-06-01”、“2015-06-28”),
tmp=1)
data1$Date=StartDate&日期商店代码促销StartDate结束日期专业销售
#>1 2015-06-28 34促销1 2015-02-10 2015-02-17 0
#>2 2015-06-28 34促销2 2015-03-15 2015-03-22 0
#>3 2015-06-28 34促销3 2015-05-24 2015-06-01 0
#>4 2015-06-28 34促销4 2015-06-21 2015-06-28 1
由reprex软件包(v0.2.0)于2018年5月26日创建
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
data1=data.frame(Date=as.Date("2015-06-28"), Storecode=34, tmp = 1)
data2=data.frame(Promo=c("Promo1","Promo2","Promo3","Promo4"),
StartDate=c("2015-02-10","2015-03-15"," 2015-05-24","2015-06-21"),
EndDate=c("2015-02-17","2015-03-22","2015-06-01","2015-06-28"),
tmp = 1)
data1$Date <- as.Date(data1$Date)
data2$StartDate <- as.Date(data2$StartDate)
data2$EndDate <- as.Date(data2$EndDate)
full_join(data1, data2, by = "tmp") %>%
select(-tmp) %>%
mutate(pro_sales = case_when(
Date>=StartDate & Date<=EndDate ~ 1,
TRUE ~ 0))
#> Date Storecode Promo StartDate EndDate pro_sales
#> 1 2015-06-28 34 Promo1 2015-02-10 2015-02-17 0
#> 2 2015-06-28 34 Promo2 2015-03-15 2015-03-22 0
#> 3 2015-06-28 34 Promo3 2015-05-24 2015-06-01 0
#> 4 2015-06-28 34 Promo4 2015-06-21 2015-06-28 1