2
這是我的例子。我讀了以下文件:sample_dataR dplyr中不同單位的行之間的時差
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),]
因此,我有
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
所以我組由MDN列和計算Cl_Date柱之間的區別。正如你可以看到有時在幾分鐘內(A組)有所不同,有時在幾天(B組)有所不同。
爲什麼時差在不同單位以及如何糾正?
P.S.我無法重現與手動data.frame
創建相同的例子,所以我不得不從文件讀取。
UPDATE 1 diff(ts$Cl_Date)
似乎是一致的,一切都在幾分鐘內。 dplyr
內是否有什麼突破?
UPDATE 2
ts <- ts %>% group_by(MDN) %>% arrange(Cl_Date) %>%
mutate(time_diff_2 = Cl_Date-lag(Cl_Date))
產生相同的結果。
爲什麼不使用像'DF <一種容易再現的例子 - data.frame(GRP =代表(C( 「一」, 「B」, 「C」, 「d」),每= 3), (0,1,11),c(0,1,11)* 60,c(0,1,11),c(0,1,2),c(0,1,2) )* 60 * 60,c(0,1,11)* 60 * 60 * 24)) ' – Henrik
@Henrik同意,謝謝!現在,它是一個錯誤,我如何報告'dplyr'的錯誤? – user1700890
這不是'dplyr'中的錯誤,它是'difftime'的工作原理。我認爲幫助文本的相關部分是「如果單位=」自動「,則選擇一組合適的單位,其中所有絕對差值都大於1。 – Henrik