use*_*890 4 datetime r difference dplyr
这是我的例子。我正在读取以下文件:sample_data
library(dplyr)
txt <- c('"", "MDN", "Cl_Date"',
'"1", "A", "2017-04-15 15:10:42.510"',
'"2", "A", "2017-04-01 14:47:23.210"',
'"3", "A", "2017-04-01 14:49:54.063"',
'"4", "B", "2017-04-30 13:25:00.000"',
'"5", "B", "2017-04-03 17:53:13.217"',
'"6", "B", "2017-04-15 15:17:43.780"')
ts <- read.csv(text = txt, as.is = TRUE)
ts$Cl_Date <- as.POSIXct(ts$Cl_Date)
ts <- ts %>% group_by(MDN) %>% arrange(Cl_Date) %>%
mutate(time_diff = c(0,diff(Cl_Date)))
ts <-ts[order(ts$MDN, ts$Cl_Date),]
Run Code Online (Sandbox Code Playgroud)
结果我有
MDN Cl_Date time_diff
A 4/1/2017 14:47 0
A 4/1/2017 14:49 2.514216665
A 4/15/2017 15:10 20180.80745
B 4/3/2017 17:53 0
B 4/15/2017 15:17 11.89202041
B 4/30/2017 13:25 14.92171551
Run Code Online (Sandbox Code Playgroud)
因此,我按MDN列分组并计算Cl_Date列之间的差异。如您所见,有时以分钟为单位(A组)和有时以天(B组)不同。
为什么不同单位的时差如何校正?
PS我无法通过手动data.frame
创建来重现相同的示例,因此我不得不从文件中读取。
UPDATE 1
diff(ts$Cl_Date)
似乎是一致的,一切都在几分钟之内。里面有东西破裂dplyr
吗?
更新2
ts <- ts %>% group_by(MDN) %>% arrange(Cl_Date) %>%
mutate(time_diff_2 = Cl_Date-lag(Cl_Date))
Run Code Online (Sandbox Code Playgroud)
产生相同的结果。
ts <- ts %>% group_by(MDN) %>% arrange(Cl_Date) %>%
mutate(time_diff_2 = as.numeric(Cl_Date-lag(Cl_Date), units = 'mins'))
Run Code Online (Sandbox Code Playgroud)
将时差转换为数值。您可以使用units
参数使返回值保持一致。
归档时间: |
|
查看次数: |
1790 次 |
最近记录: |