我可以访问包含以下内容的数据框:
我需要为每一行计算此日期已知的不活动时间段,即从上次访问到当前行日期的天数。
上次访问的日期可以通过计算具有相同值的先前行数来从nb_visit_life_to_date中推断出来。
例如,如果我有3行关于具有相同生活日期访问次数的同一用户,那么我应该为此第3行恢复2天的非活动期。
真实数据示例:
input <- data.frame(
user = c(1,1,1,1,1,2,2,2,2,2),
date = c(1,2,3,4,5,1,2,3,4,5),
nb_visit_life_to_date = c(1,1,1,2,3,1,2,2,2,2)
)
output <- data.frame(
input,
inactivity_period_from_previous_visit = c(0,1,2,0,0,0,0,1,2,3)
)
理想情况下,我想使用dplyr
语法,但我当然愿意接受所有解决方案。
答案 0 :(得分:2)
这是一个简单的rle
(运行长度编码)任务:
sequence(rle(input$nb_visit_life_to_date)$lengths) - 1
# [1] 0 1 2 0 0 0 0 1 2 3