R 中日期之间的时间,分解为子数据帧

Time between dates in R, broken down into sub-dataframes

我已经研究过 "batch variables",但我对它们的使用还不是很满意。

我有一个数据框,其中一列填充了不同的 phone 数字。例如:

111-111-1111
111-111-1111
222-222-2222
222-222-2222
222-222-2222
222-222-2222
333-333-3333
333-333-3333
333-333-3333

另一列分别显示调用日期。例如:

09/01/15
09/02/15
09/03/15
09/04/15
09/05/15
09/06/15
09/07/15
09/08/15
09/09/15

我想了解每个移动设备 phone 号码的通话间隔天数。当然,这个例子很简单。但是,我有一个包含 27,000 个条目的数据集。我需要有关创建批处理变量和循环的帮助(如有必要)。

我正在使用 "lubridate" 包来读取日期,使用 "plyr" 包来读取 count 函数,我很感兴趣,所以我可以查看此调用重复了多少次。

目标:找出呼叫 1 和呼叫 2 之间、呼叫 2 和呼叫 3 之间、呼叫 i 和呼叫 i+1 之间的平均时间(天)。

我是一个非常新的 R 用户。我已经广泛搜索了此类问题的解决方案。感谢任何愿意提供帮助的人。

使用库 dplyr,你可以做这样的事情:

library(dplyr)
df %>% group_by(phone) %>% mutate(daysBetweeenCalls = as.numeric(difftime(date, lag(date), units = 'days')))

确保日期字段是日期格式。你可以这样做:

df$date <- as.Date(df$date, format = '%m/%d/%Y')

输出如下:

Source: local data frame [9 x 3]
Groups: phone [3]

         phone       date daysBetweeenCalls
         (chr)     (date)             (dbl)
1 111-111-1111 0015-09-01                NA
2 111-111-1111 0015-09-02                 1
3 222-222-2222 0015-09-03                NA
4 222-222-2222 0015-09-04                 1
5 222-222-2222 0015-09-05                 1
6 222-222-2222 0015-09-06                 1
7 333-333-3333 0015-09-07                NA
8 333-333-3333 0015-09-08                 1
9 333-333-3333 0015-09-09                 1

每个 phone 号码的第一行是 NA,因为之前没有来电。