我想根据产品计算故障日期和信用日期之间的平均天数。仅计算天数是没有问题的,但是我找不到任何有关如何找到平均天数的示例。
Product Credit Date Failure Date
Product1 2/1/2019 0:00 1/24/2019 0:00
Product1 2/1/2019 0:00 1/29/2019 0:00
Product1 2/1/2019 0:00 1/30/2019 0:00
Product1 2/1/2019 0:00 1/31/2019 0:00
Product1 2/1/2019 0:00 1/8/2019 0:00
Product1 2/1/2019 0:00 1/17/2019 0:00
Product1 2/1/2019 0:00 1/8/2019 0:00
Product1 2/1/2019 0:00 1/21/2019 0:00
Product2 2/1/2019 0:00 1/31/2019 0:00
Product2 2/1/2019 0:00 1/7/2019 0:00
Product2 2/1/2019 0:00 1/4/2019 0:00
Product2 2/1/2019 0:00 1/18/2019 0:00
Product2 2/1/2019 0:00 10/17/2018 0:00
不幸的是,我无法真正想到一个起点,因此我没有任何可共享的代码。 dplyr或其他任何方法都可以。感谢您提供的任何帮助。
答案 0 :(得分:1)
数据表方法
样本数据
DT <- fread("Product Credit_Date Failure_Date
Product1 2/1/2019T0:00 1/24/2019T0:00
Product1 2/1/2019T0:00 1/29/2019T0:00
Product1 2/1/2019T0:00 1/30/2019T0:00
Product1 2/1/2019T0:00 1/31/2019T0:00
Product1 2/1/2019T0:00 1/8/2019T0:00
Product1 2/1/2019T0:00 1/17/2019T0:00
Product1 2/1/2019T0:00 1/8/2019T0:00
Product1 2/1/2019T0:00 1/21/2019T0:00
Product2 2/1/2019T0:00 1/31/2019T0:00
Product2 2/1/2019T0:00 1/7/2019T0:00
Product2 2/1/2019T0:00 1/4/2019T0:00
Product2 2/1/2019T0:00 1/18/2019T0:00
Product2 2/1/2019T0:00 10/17/2018T0:00")
#make real datetimes
cols = c("Credit_Date", "Failure_Date")
DT[, (cols) := lapply( .SD, as.POSIXct, format = "%m/%d/%YT%H:%M"), .SDcols = cols]
代码
#summarise
DT[, .( mean = mean( difftime( Credit_Date, Failure_Date, units = "days" ) ) ),
by = Product ]
输出
Product mean
1: Product1 11.00000 days
2: Product2 35.00833 days
答案 1 :(得分:0)
tmfmnk和Rui Barradas带我去了我需要去的地方。对于任何感兴趣的人,我还添加了一个方便的unixtime转换。
df$Credit_Date <- as.Date(as.POSIXct(df$Credit_Date, origin="1970-01-01"))
df$Failure_Date <- as.Date(as.POSIXct(df$Failure_Date, origin="1970-01-01"))
df %>% group_by(Product) %>% summarise(Res = mean(Credit_Date - Failure_Date)