簡體   English   中英

如何計算R中數據幀的平均時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM