如何使用R中的条件计算日期之间的差异
我想知道用户有多少天不购买产品 我有以下建议:如何使用R中的条件计算日期之间的差异,r,date,dplyr,tidyverse,cumsum,R,Date,Dplyr,Tidyverse,Cumsum,我想知道用户有多少天不购买产品 我有以下建议: ID| DATA | QTD 1 |2019-01-31 | NA 1 |2019-02-28 | 3 1 |2019-03-31 | NA 1 |2019-04-30 | 5 2 |2019-01-31 | 3 2 |2019-02-28 | 4 2 |2019-03-31 | NA 2 |2019-04-30 | NA 3 |2019-01-31 | NA 3 |2019-02-28 | 3
ID| DATA | QTD
1 |2019-01-31 | NA
1 |2019-02-28 | 3
1 |2019-03-31 | NA
1 |2019-04-30 | 5
2 |2019-01-31 | 3
2 |2019-02-28 | 4
2 |2019-03-31 | NA
2 |2019-04-30 | NA
3 |2019-01-31 | NA
3 |2019-02-28 | 3
3 |2019-03-31 | NA
3 |2019-04-30 | NA
我试图使用dplyr:mutate,但没有得到任何结果
我的目标:
ID| DATA | QTD | Days
1 |2019-01-31 | NA | NA
1 |2019-02-28 | 3 | 0
1 |2019-03-31 | NA | 31
1 |2019-04-30 | 5 | 0
2 |2019-01-31 | 3 | 0
2 |2019-02-28 | 4 | 0
2 |2019-03-31 | NA | 31
2 |2019-04-30 | NA | 61
3 |2019-01-31 | NA | NA
3 |2019-02-28 | NA | NA
3 |2019-03-31 | 4 | 31
3 |2019-04-30 | 8 | 61
Tks库(dplyr)
图书馆(tidyr)
df1%>%
突变(数据=as.Date(数据,“%Y-%m-%d”),
QTD=作为数字(作为字符(QTD))%>%
分组人(ID,
ID2=cumsum(+(如果其他(is.na(QTD),0,QTD)!=0))%>%
突变(NoBuy=cumsum)(替换(
as.numeric(如果其他(is.na(QTD),数据-滞后(数据),0))
, 0))) %>%
解组%>%选择(-ID2)
#>警告:强制引入NAs
#>#tibble:12 x 4
#>ID数据QTD NoBuy
#>
#>1 2019-01-31北美0
#> 2 1 2019-02-28 3 0
#>31 2019-03-31北美31
#> 4 1 2019-04-30 5 0
#> 5 2 2019-01-31 3 0
#> 6 2 2019-02-28 4 0
#>7 2 2019-03-31北美31
#>8 2 2019-04-30北美61
#>9 3 2019-01-31 NA 0
#> 10 3 2019-02-28 3 0
#>11 3 2019-03-31北美31
#>12 3 2019-04-30北美61
数据:
df1 1)使用可复制数据发布,例如,dput(head(df))
,2)显示您使用的代码(而不仅仅是“我尝试了dplyr::mutate
)。