2017-07-27 26 views
0

我會從不同的傳感器,包括每分鐘的時間戳一些數據每n個值的平均數。 爲了使我的數據可視化,我想用平均值對每10個值進行總結。的R - 從塔中的數據幀,數字&POSIX

我的數據是這樣的:

Temp Humidity Pressure   Time 
1   21.9    66.1 1007.76 2017-07-24 18:13:02 
2   21.9    66.2 1007.76 2017-07-24 18:14:05 
3   21.9    66.2 1007.76 2017-07-24 18:15:02 
4   22.0    65.8 1007.76 2017-07-24 18:16:02 
5   22.0    66.1 1007.76 2017-07-24 18:17:02 
6   22.0    66.2 1007.76 2017-07-24 18:18:02 
7   22.0    66.1 1007.76 2017-07-24 18:19:02 
8   22.0    66.3 1007.76 2017-07-24 18:20:02 
9   22.0    66.3 1007.76 2017-07-24 18:21:02 
10   22.0    66.3 1007.76 2017-07-24 18:22:02 
11   22.0    66.0 1007.76 2017-07-24 18:23:02 


# [...] about 1700 rows 

我有一個工作的代碼,但只適用於數字的cols:

aggregate(df,list(rep(1:(nrow(df)%/%n+1),each=n,len=nrow(df))),mean)[-1]; 

這給了我什麼,我想第一個三列,這是數字向量。但是,目前,我所得到的每一行都是「2017-07-24 18:17:32」。 有沒有人知道這個解決方案?如果我不得不單獨採取時間的手段,這不會是一個問題。

+3

使用'dput(頭(DF,10))'出示您的數據,而不是你有的桌子。 – Masoud

+0

...或者'dput(droplevels(head(df,11)))'如果你有因子列。 – Gregor

+0

如果數據的類是'POSIXt',那麼它應該工作。沒有看到您的數據的實際結構,我們無法幫助您。 – Masoud

回答

0

,您可以撥打欄目組和group_by這一個,summarize所有列,以獲得平均每10行:

n <- nrow(df) 
df$group <- rep(seq_len(ceiling(n/10)), each = 10)[seq_len(n)] 

library(dplyr) 
df %>% 
    group_by(group) %>% 
    summarise_all(mean) %>% 
    select(-group)