簡體   English   中英

匯總R中每日間隔的數據

[英]Aggregate data on daily intervals in R

我的數據集由3列(時間,價格和數量)中的幾個觀察值組成,如下所示,

time                price   volume
2017-11-15 9:35:11  301.1   1.1
2017-11-15 9:35:09  300.9   3.0
2017-11-15 9:35:07  300.8   1.4 
2017-11-15 9:35:06  300.9   0.1
2017-11-15 9:35:01  301.0   0.6

我想首先將數據按24h的周期進行裁剪,為每個24h的周期添加卷,並在匯總數據時獲得。

我已經嘗試執行以下操作(代碼上的初始數據集稱為“ mydf”),

##sum the volume over periods of 24h
mydf_volume_24h <- data.frame (volume = tapply (cbind (mydf$volume), list (cut (mydf$time, breaks="24 hours")), sum))

##bind the previous df with the prices for each time label
mydf_24h <- setNames (cbind (rownames (mydf_volume_24h), mydf_volume_24h, row.names = NULL), c("time", "volume"))

mydf <- mydf %>% 
select(-volume)

mydf_24h <- merge (mydf, mydf_volume_24h, by = "time")

除了(可能)不是最佳/有效方式之外,此代碼的問題不會出現,因為該代碼的第一部分為我提供了24小時內的體積總和,但用時間23標記了每個總和: 00:00,這並不總是存在於我的數據集中。

我的意圖是減少24小時的時間段,但給我一個最接近24小時時間段的(實際)觀察時間。 有什么辦法嗎?

這可能不完全是您想要的,但是根據您的描述,我收集到了您想要對每一天的總量進行匯總,以及獲取每一天的最長時間。 如果確實如此,則下面的方法應該可以獲取匯總數據框:

library(dplyr)
library(stringr)
library(lubridate)

df <- tibble(time = c(
             "2017-11-15 9:35:11",
             "2017-11-15 9:35:09",
             "2017-11-15 9:35:07",
             "2017-11-15 9:35:06",
             "2017-11-15 9:35:01",
             "2017-11-16 9:36:12",
             "2017-11-16 9:35:09",
             "2017-11-16 9:35:07",
             "2017-11-16 9:35:06",
             "2017-11-16 9:35:01"
             ),
             price = c(301.1, 300.9, 300.8, 300.9, 301.0,
                       302, 303, 304, 305, 306),
             volume = c(1.1, 3.0, 1.4, 0.1, 0.6,
                        1.4, 3.4, 1.5, 0.5, 0.6)
)

df %>% mutate(time = ymd_hms(time)) %>% 
        mutate(day = str_extract(time, "^\\S+"))  %>% 
        group_by(day) %>% 
        summarize(volume = sum(volume), maxTime = max(time))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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