【问题标题】:R, dplyr package, get a closing value for each dayR,dplyr包,获取每天的收盘价
【发布时间】:2021-05-31 15:18:41
【问题描述】:

我有一个月的以下数据(df):

时间戳符号侧面大小价格 1: 2021-01-01 00:00:01 XBTUSD 买入 10000 28951.0 2: 2021-01-01 00:00:05 XBTUSD 卖出 1 28950.5 3: 2021-01-01 00:00:06 XBTUSD 卖出 1 28950.5 4: 2021-01-01 00:00:06 XBTUSD 卖出 1 28950.5 5: 2021-01-01 00:00:06 XBTUSD 卖出 1 28950.5 6: 2021-01-01 00:00:07 XBTUSD 卖出 1 28950.5 7:…………………………

我想提取每个交易日的收盘价。我使用以下代码:

cl_price <- df %>% mutate(day = day(timestamp)) %>% 
      group_by(day) %>% summarise(closing = last(price))

但是,它没有给出每一天的收盘价向量,而是只给出一个对应于该月最后一天的收盘价。这是输出:

closing
1   33101

如何修改上面的代码,以便我收到一个月内每个交易日的收盘价向量,而不仅仅是最后一个? 谢谢!

样本数据

structure(list(timestamp = c("2021-01-01 00:00:01", "2021-01-01 00:00:05", 
"2021-01-01 00:00:06", "2021-01-01 00:00:06", "2021-01-01 00:00:06", 
"2021-01-01 00:00:07"), symbol = c("XBTUSD", "XBTUSD", "XBTUSD", 
"XBTUSD", "XBTUSD", "XBTUSD"), side = c("Buy", "Sell", "Sell", 
"Sell", "Sell", "Sell"), size = c(10000, 1, 1, 1, 1, 1), price = c(28951, 
28950.5, 28950.5, 28950.5, 28950.5, 28950.5)), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))

【问题讨论】:

  • 我只使用前 6 行示例数据用于此解决方案,但请记住,为了让您的问题吸引相关结果,您需要通过 @ 共享可重现的数据片段987654324@,以便人们可以使用它来帮助您并更清楚地了解您的数据集。

标签: r dplyr lubridate


【解决方案1】:

我认为您可以使用以下解决方案。我也认为可能有一个更简洁的解决方案,但对你来说它会成功:

library(dplyr)
library(lubridate)

df %>%
  mutate(timestamp = ymd_hms(timestamp)) %>%
  mutate(year = year(timestamp), 
         month = month(timestamp), 
         day = day(timestamp)) %>% 
  group_by(year, month, day) %>%
  arrange(year, month, day) %>%
  slice_tail() %>%
  pull(price)

[1] 28950.5

数据

structure(list(timestamp = c("2021-01-01 00:00:01", "2021-01-01 00:00:05", 
"2021-01-01 00:00:06", "2021-01-01 00:00:06", "2021-01-01 00:00:06", 
"2021-01-01 00:00:07"), symbol = c("XBTUSD", "XBTUSD", "XBTUSD", 
"XBTUSD", "XBTUSD", "XBTUSD"), side = c("Buy", "Sell", "Sell", 
"Sell", "Sell", "Sell"), size = c(10000, 1, 1, 1, 1, 1), price = c(28951, 
28950.5, 28950.5, 28950.5, 28950.5, 28950.5)), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    相关资源
    最近更新 更多