每组两个日期之间的平均时间差
Average Time Difference Between Two Dates PER Group
我有一个包含用户及其访问日期的数据框。我试图找到每组访问之间的平均时间差。 输出将以天或一天的一小部分为单位
require(lubridate)
so <- data.frame(visit_dates = c("12/4/2016","12/6/2016","12/7/2016","12/3/2016","12/7/2016","12/10/2016"), person = c("1","1","1","2","2","2"))
so$visit_dates <- mdy(format(as.POSIXct(strptime(so$visit_dates,"%m/%d/%Y",tz = "")),format = "%m/%d/%Y"))
输出类似于:
person avgTimeBetweenVisit
1 2.5
2 3.5
那个怎么样:
so %>%
group_by(person)%>%
mutate(Difference = visit_dates - lag(visit_dates)) %>%
summarize(mean_time = mean(Difference, na.rm=TRUE))
link 帮助我解决了 'diff' 问题。
尝试 data.table:
require(lubridate)
require(data.table)
so <- data.frame(visit_dates = c("12/4/2016","12/6/2016","12/7/2016","12/3/2016","12/7/2016","12/10/2016"), person = c("1","1","1","2","2","2"))
so$visit_dates <- mdy(format(as.POSIXct(strptime(so$visit_dates,"%m/%d/%Y",tz = "")),format = "%m/%d/%Y"))
so <- data.table(so, key = c("person", "visit_dates"))
res <- so[, .(avgTimeBetweenVisit = mean(diff(visit_dates))), by = person]
print(res)
# person avgTimeBetweenVisit
# 1: 1 1.5 days
# 2: 2 3.5 days
我有一个包含用户及其访问日期的数据框。我试图找到每组访问之间的平均时间差。 输出将以天或一天的一小部分为单位
require(lubridate)
so <- data.frame(visit_dates = c("12/4/2016","12/6/2016","12/7/2016","12/3/2016","12/7/2016","12/10/2016"), person = c("1","1","1","2","2","2"))
so$visit_dates <- mdy(format(as.POSIXct(strptime(so$visit_dates,"%m/%d/%Y",tz = "")),format = "%m/%d/%Y"))
输出类似于:
person avgTimeBetweenVisit
1 2.5
2 3.5
那个怎么样:
so %>%
group_by(person)%>%
mutate(Difference = visit_dates - lag(visit_dates)) %>%
summarize(mean_time = mean(Difference, na.rm=TRUE))
link 帮助我解决了 'diff' 问题。
尝试 data.table:
require(lubridate)
require(data.table)
so <- data.frame(visit_dates = c("12/4/2016","12/6/2016","12/7/2016","12/3/2016","12/7/2016","12/10/2016"), person = c("1","1","1","2","2","2"))
so$visit_dates <- mdy(format(as.POSIXct(strptime(so$visit_dates,"%m/%d/%Y",tz = "")),format = "%m/%d/%Y"))
so <- data.table(so, key = c("person", "visit_dates"))
res <- so[, .(avgTimeBetweenVisit = mean(diff(visit_dates))), by = person]
print(res)
# person avgTimeBetweenVisit
# 1: 1 1.5 days
# 2: 2 3.5 days