r语言 - 根据从特定日期开始的时间创建变量



我试图生成一个变量,该变量是采用时间的数值,它引用了一个人采用该行为的哪个波。波浪将创建在时间从日期x,这可能是每天,每周或每月,我将需要改变日期x和时间段。这是一个最小的工作示例


# create example df of person reference and date/times they adopted a behaviour 
y <- as.POSIXct("2014-01-01 00:00:01")
df <- data.frame(
person = c(1:10), 
date_time = c(y+days(1),    
y+days(10),
y+days(35),
y+days(40),
y+days(60),
y+days(70),
y+days(80),
y+days(90),
y+days(100),
y+days(110)))

我想把上面记录为date_time的那些收养时间分成几个时间段,这些时间段可以从一个被称为收养时间的特定日期开始顺序排列。下面是一个方法来创建所需的输出月时间乐队从日期y。然而我可能需要改变y和乐队的时间是几天,几周或几个月进行不同的分析。下面的结果栏是一个数字变量,它与人从y日期开始采取这种行为的月份有关,即第1个月、第2个月等。每个月将有不同数量的适配器。


# create a sequential adoption time, in this case by month
df$adoption <- ifelse(df$date_time <= y+months(1), 1, 0)
df$adoption <- ifelse(df$date_time > y+months(1) & df$date_time <=y+months (2), 2, df$adoption)
df$adoption <- ifelse(df$date_time > y+months(2) & df$date_time <=y+months (3), 3, df$adoption)
df$adoption <- ifelse(df$date_time > y+months(3) & df$date_time <=y+months (4), 4, df$adoption)
df$adoption <- ifelse(df$date_time > y+months(4) & df$date_time <=y+months (5), 5, df$adoption)

我的日期框架显然要大得多,我希望在不同的时间段(如一天、一周、2个月或6个月)反复重用该函数,以创建不同的采用周期。它可能是为这个而存在的函数或者可以创建的函数?对不起,我的功能创建技能不够好,无法创建它!

您的情况有点不清楚,但也许像这样简单的东西可以工作吗?

df %>% mutate(adoption = month(date_time) - month(y))
person           date_time adoption
1       1 2014-01-02 00:00:01        0
2       2 2014-01-11 00:00:01        0
3       3 2014-02-05 00:00:01        1
4       4 2014-02-10 00:00:01        1
5       5 2014-03-02 00:00:01        2
6       6 2014-03-12 00:00:01        2
7       7 2014-03-22 00:00:01        2
8       8 2014-04-01 00:00:01        3
9       9 2014-04-11 00:00:01        3
10     10 2014-04-21 00:00:01        3

我认为它在11处停止,所以如果你需要绝对月份那么你需要像

这样做
df %>% mutate(adoption = month(date_time) - month(y) + 12*(year(date_time) - year(y)))

相关内容

最新更新