我的分析被阻止
我有一個這樣的資料集:
| 日期 | 光 |
|---|---|
| 2019-02-15 01:00:00 | 0.134 |
| 2019-02-15 02:00:00 | 0.345 |
| 2019-02-15 03:00:00 | 0.567 |
| 2019-02-15 04:00:00 | 0 |
| 2019-02-15 05:00:00 | 0.100 |
| ... | ... |
| 2019-03-10 15:00:00 | 0.890 |
| ... | ... |
這是一個包含大量日期的大型資料集。我正在嘗試獲得不同時間段的輕度平均值:每日平均值;5 天平均值;1 周平均值(過去 4 天 今天;過去 6 天 今天和每日平均值)
我想要的結果就像這個資料集:
| 日期 | 光 | timeperiod_5 天 | timeperiod_1week | timeperiod_24h |
|---|
我嘗試使用不同的功能:timeAverage; xts。但我無法得到任何結果,我不知道它們是否適合我想要的。
有人知道我如何獲得我的結果嗎?
提前致謝 !
uj5u.com熱心網友回復:
不確定“24h”是指“今天”還是“過去 24 小時”,在第一種情況下,您的最終代碼如下所示:
library(dplyr)
library(lubridate)
rollmean <- function(i,window){
startdate <- as.Date(df$Date[i])-days(window-1)
enddate <- as.Date(df$Date[i]) 1
tmp <- df %>% filter(between(as.Date(Date), startdate, enddate))
return(mean(tmp$Light))
}
for (i in 1:nrow(df)) {
df[i, "timeperiod_24h"] <- rollmean(i, 1)
df[i, "timeperiod_5d"] <- rollmean(i, 5)
df[i, "timeperiod_7d"] <- rollmean(i, 7)
}
結果是:
Date Light timeperiod_24h timeperiod_5d timeperiod_7d
1 2019-02-15 01:00:00 0.134 0.2292 0.2292 0.2292
2 2019-02-15 02:00:00 0.345 0.2292 0.2292 0.2292
3 2019-02-15 03:00:00 0.567 0.2292 0.2292 0.2292
4 2019-02-15 04:00:00 0.000 0.2292 0.2292 0.2292
5 2019-02-15 05:00:00 0.100 0.2292 0.2292 0.2292
6 2019-02-17 05:00:00 0.300 0.3000 0.2410 0.2410
7 2019-03-10 15:00:00 0.890 0.8900 0.8900 0.8900
如果您想要“過去 24 小時”,您可以洗掉as.Date函式中的s 并稍微更改舍入。
uj5u.com熱心網友回復:
我不確定你期望什么結果。您是否有可以共享的部分或全部代碼?
我有一些可以作為開始的東西。
data = read.csv(file = "data",header = T,sep = ",")
data$Date = as.POSIXct(data$Date , format = "%Y-%m-%d %H:%M:%S" ) #to make date as date in R
data$Day = format(data$Date,"%Y-%m-%d") #to extract only the day
# Aggregation
tab_A = aggregate(x=data[,-c(1,2,3)], by=list(A=data$Day), FUN=mean , na.rm = T) # Whith that you can get the daily mean of your data base
如果您找到一種方法來通過周數描述 R 中的“周”,例如您可以按周聚合每年。
至于過去 4 天 今天,你可以簡單地像:
mean(data$Light[(length(data$Light)-5):length(data$Light)])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/312511.html
上一篇:為什么我不能轉化為平均這兩個值?
