[英]How to calculate mean time in dataframe in R
抱歉我的英語,我是 R 編程的新手。 我在 csv 中有這些數據
DATA1 DATA2
PAPERINO 05:29:29
PAPERINO 04:43:47
PAPERINO 04:43:47
PAPERINO 03:27:46
PIPPO000 00:27:07
PIPPO000 00:27:07
PIPPO000 00:27:07
PIPPO000 00:27:07
PIPPO000 00:26:04
PIPPO000 00:26:04
PIPPO000 00:26:04
BALUBABA 03:02:22
BALUBABA 03:33:29
ZORROBIS 07:56:34
ZORROBIS 07:58:13
ZORROBIS 07:59:06
ZORROBIS 18:17:29
ZORROBIS 18:32:23
ZORROBIS 18:36:50
我想要 group_by DATA1 並根據 24 小時計算每個對象的平均值。
ZORROBIS 的結果示例我希望在我的 excel 中有兩個相同的結果:
ZORROBIS 07:57:58
ZORROBIS 18:28:54
我使用了 dplyr 和 lubridate,但沒有成功。 感謝任何可以幫助我獲得所需結果的人。
我們可以使用as.ITime
轉換為 'Time' 對象,然后按 'DATA1' 和 'DATA2' 的hour
分組后取mean
library(data.table)
library(dplyr)
df1 %>%
mutate(DATA2 = as.ITime(DATA2)) %>%
group_by(DATA1, hour = hour(DATA2)) %>%
summarise(DATA2 = mean(DATA2)) %>%
select(-hour)
# A tibble: 7 x 2
# Groups: DATA1 [4]
# DATA1 DATA2
# <chr> <ITime>
#1 BALUBABA 03:17:55
#2 PAPERINO 03:27:46
#3 PAPERINO 04:43:47
#4 PAPERINO 05:29:29
#5 PIPPO000 00:26:40
#6 ZORROBIS 07:57:57
#7 ZORROBIS 18:28:54
或者使用data.table
setDT(df1)[, .(DATA2 = mean(as.ITime(DATA2))), by = .(DATA1, hour = hour(as.ITime(DATA2)))]
df1 <- structure(list(DATA1 = c("PAPERINO", "PAPERINO", "PAPERINO",
"PAPERINO", "PIPPO000", "PIPPO000", "PIPPO000", "PIPPO000", "PIPPO000",
"PIPPO000", "PIPPO000", "BALUBABA", "BALUBABA", "ZORROBIS", "ZORROBIS",
"ZORROBIS", "ZORROBIS", "ZORROBIS", "ZORROBIS"), DATA2 = c("05:29:29",
"04:43:47", "04:43:47", "03:27:46", "00:27:07", "00:27:07", "00:27:07",
"00:27:07", "00:26:04", "00:26:04", "00:26:04", "03:02:22", "03:33:29",
"07:56:34", "07:58:13", "07:59:06", "18:17:29", "18:32:23", "18:36:50"
)), class = "data.frame", row.names = c(NA, -19L))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.