R 使用登录日期延迟数据计算登录之间的时间
我有一个数据集,我将简化为: 来自str() $User#id:num[1:84164]####################(匿名)。。。 $DateLoggedIn:Date[1:84164],格式:“2020-11-14”“2020-11-11”“2020-11-05”“2020-11-01” 我正在尝试创建一个数据框,该数据框在登录时具有一系列列 用户| id | DateLoggedIn(排序为最后一次)|第二次最后登录|第三次最后登录|等等,这样我可以计算出所有列之间的时间,也可以创建登录列之间的平均时间R 使用登录日期延迟数据计算登录之间的时间,r,dplyr,time-series,lag,R,Dplyr,Time Series,Lag,我有一个数据集,我将简化为: 来自str() $User#id:num[1:84164]####################(匿名)。。。 $DateLoggedIn:Date[1:84164],格式:“2020-11-14”“2020-11-11”“2020-11-05”“2020-11-01” 我正在尝试创建一个数据框,该数据框在登录时具有一系列列 用户| id | DateLoggedIn(排序为最后一次)|第二次最后登录|第三次最后登录|等等,这样我可以计算出所有列之间的时间,也可以
TimeBetween <- TimeBetween >% arrange(.,User_id, desc(DateLoggedIn)) %>% group_by(.,User_id) %>%
mutate(.,SecLog = lag(DateLoggedIn,1)) %>%
mutate(.,TrdLog = lag(DateLoggedIn,2)) %>%
mutate(.,FrthLog = lag(DateLoggedIn,3)) %>%
mutate(.,FithLog = lag(DateLoggedIn,4)) %>%
TimeBetween%arrange(,User\u id,desc(DateLoggedIn))%%>%group\u by(,User\u id)%%
突变(,SecLog=lag(DateLoggedIn,1))%>%
突变(,TrdLog=lag(DateLoggedIn,2))%>%
突变(,FrthLog=lag(DateLoggedIn,3))%>%
突变(,FithLog=lag(DateLoggedIn,4))%>%
它的输出总是错误的,我希望它对于每个用户ID都会滞后,但它只滞后于第一行
我尝试过使用HMISC lag\DPLYR last\base lag,并将管道顺序和内部排列顺序更改为“无运气”
有人能帮忙吗
谢谢
示例数据--dput(时间间隔[1:50,c(1,3,6)])
结构(列表(用户id=c(130223、130223、130223130223130223136038136038136038),日期记录数据=c(“2020-11-14”、“2020-11-11”、“2020-11-05”、“2020-11-01”、“2020-10-28”、“2020-10-27”、“2020-09-21”、“2020-09-20”、“2020-09-20”)
或
用户id
144548
144548
144548
144548
144548
144548
144548
144548
144548
144548
144548
142267
142267
142267
142267
142267
142267
142267
142267
日期记录
2020-11-14
2020-11-11
2020-11-05
2020-11-01
2020-10-28
2020-10-27
2020-10-26
2020-10-23
2020-10-22
2020-10-21
2020-10-11
2020-09-11
2020-09-08
2020-09-07
2020-09-06
2020-09-05
2020-09-02
2020-08-30
2020-08-29
期望输出-对于每个用户id,延迟再次开始
用户id
144548
144548
144548
144548
144548
144548
144548
144548
144548
144548
144548
142267
142267
142267
142267
142267
142267
142267
142267
日期记录
2020-11-14
2020-11-11
2020-11-05
2020-11-01
2020-10-28
2020-10-27
2020-10-26
2020-10-23
2020-10-22
2020-10-21
2020-10-11
2020-09-11
2020-09-08
2020-09-07
2020-09-06
2020-09-05
2020-09-02
2020-08-30
2020-08-29
Lag1
NA
2020-11-14
2020-11-11
2020-11-05
2020-11-01
2020-10-28
2020-10-27
2020-10-26
2020-10-23
2020-10-22
2020-10-21
NA
2020-09-11
2020-09-08
2020-09-07
2020-09-06
2020-09-05
2020-09-02
2020-08-30
Lag2
NA
NA
2020-11-14
2020-11-11
2020-11-05
2020-11-01
2020-10-28
2020-10-27
2020-10-26
2020-10-23
2020-10-22
NA
NA
2020-09-11
2020-09-08
2020-09-07
2020-09-06
2020-09-05
2020-09-02
Lag3
NA
NA
NA
2020-11-14
2020-11-11
2020-11-05
2020-11-01
2020-10-28
2020-10-27
2020-10-26
2020-10-23
NA
NA
NA
2020-09-11
2020-09-08
2020-09-07
2020-09-06
2020-09-05
然而,我得到的是lag并不能区分不同的用户ID。在修复了一些打字错误后,我无法重现您的问题
library(dplyr)
TimeBetween <- structure(list(User_id = c(130223, 130223, 130223,130223,130223,130223,136038,136038,136038),
DateLoggedIn = c("2020-11-14", "2020-11-11", "2020-11-05","2020-11-01","2020-10-28","2020-10-27","2020-09-21","2020-09-20","2020-09-20")))
TimeBetween <- bind_cols(TimeBetween)
# TimeBetween$DateLoggedIn <- as.Date(TimeBetween$DateLoggedIn )
TimeBetween %>% arrange(User_id, desc(DateLoggedIn)) %>% group_by(User_id) %>%
mutate(SecLog = lag(DateLoggedIn,1)) %>%
mutate(TrdLog = lag(DateLoggedIn,2)) %>%
mutate(FrthLog = lag(DateLoggedIn,3)) %>%
mutate(FithLog = lag(DateLoggedIn,4))
# A tibble: 9 x 6
# Groups: User_id [2]
User_id DateLoggedIn SecLog TrdLog FrthLog FithLog
<dbl> <chr> <chr> <chr> <chr> <chr>
1 130223 2020-11-14 NA NA NA NA
2 130223 2020-11-11 2020-11-14 NA NA NA
3 130223 2020-11-05 2020-11-11 2020-11-14 NA NA
4 130223 2020-11-01 2020-11-05 2020-11-11 2020-11-14 NA
5 130223 2020-10-28 2020-11-01 2020-11-05 2020-11-11 2020-11-14
6 130223 2020-10-27 2020-10-28 2020-11-01 2020-11-05 2020-11-11
7 136038 2020-09-21 NA NA NA NA
8 136038 2020-09-20 2020-09-21 NA NA NA
9 136038 2020-09-20 2020-09-20 2020-09-21 NA NA
库(dplyr)
时间间隔%
突变(SecLog=lag(DateLoggedIn,1))%>%
突变(TrdLog=lag(DateLoggedIn,2))%>%
突变(FrthLog=lag(DateLoggedIn,3))%>%
突变(FithLog=lag(DateLoggedIn,4))
#一个tibble:9x6
#组:用户标识[2]
用户id日期记录在SecLog TrdLog FrthLog FithLog中
1302232020-11-14不适用
2130223 2020-11-11 2020-11-14不适用
3 130223 2020-11-05 2020-11-11 2020-11-14北美
4 130223 2020-11-01 2020-11-05 2020-11-11 2020-11-14北美
5 130223 2020-10-28 2020-11-01 2020-11-05 2020-11-11 2020-11-14
6 130223 2020-10-27 2020-10-28 2020-11-01 2020-11-05 2020-11-11
7 136038 2020-09-21不适用
8 136038 2020-09-20 2020-09-21不适用
9 136038 2020-09-20 2020-09-20 2020-09-21北美
要求结束此问题。谢谢,希望现在更好谢谢,对我来说仍然不起作用。我尝试了日期和字符两种方式。你将日期设置为chr而不是date有什么原因吗?我将进一步调查在空白项目上运行代码是否有效。问题似乎与包冲突有关。谢谢你的帮助