【问题标题】:max function for the current time当前时间的最大函数
【发布时间】:2019-11-20 13:43:30
【问题描述】:

如何在时间之后创建一个包含当天当前最高价的列?我使用了 pmax,但它没有帮助。

> df
             date_time  Price
1 2018-02-01 18:13:17 3178.5
2 2018-02-01 18:13:13 3179.0
3 2018-02-01 18:13:13 3178.5
4 2018-02-01 18:13:13 3178.5
5 2018-02-01 18:13:09 3178.5
6 2018-02-01 18:13:00 3178.5
7 2018-02-01 18:12:54 3179.5
8 2018-02-01 18:12:43 3179.5

我正在尝试这样做。

> mutate(df, high_day = ?)
            date_time  Price high_day
1 2018-02-01 18:13:17 3179.5   3179.5
2 2018-02-01 18:13:13 3179.0   3179.0
3 2018-02-01 18:13:13 3178.5   3179.0
4 2018-02-01 18:13:13 3179.0   3179.0
5 2018-02-01 18:13:09 3178.5   3178.5
6 2018-02-01 18:13:00 3178.5   3178.5
7 2018-02-01 18:12:54 3178.5   3178.5
8 2018-02-01 18:12:43 3178.5   3178.5

用于复制:

structure(list(data_hora = structure(c(1517508797, 1517508793, 
1517508793, 1517508793, 1517508789, 1517508780, 1517508774, 1517508763, 
1517508763, 1517508763, 1517508763, 1517508757, 1517508756), class = c("POSIXct", 
"POSIXt"), tzone = ""), Preco = c(3178.5, 3179, 3178.5, 3178.5, 
3178.5, 3178.5, 3179.5, 3179.5, 3179.5, 3179.5, 3179, 3179, 3179.5
)), row.names = 38:50, class = "data.frame")

【问题讨论】:

  • 这是 group_by(date_time) %>% mutate(max)
  • 我什么都没有!我需要当前的最大值,但我仍然无法管理

标签: r date posixct


【解决方案1】:

这是怎么回事:

library(lubridate)
df %>%
  arrange(date_time) %>%
  group_by(date = as.Date(date_time)) %>%
  mutate(day_high = cummax(Price))

【讨论】:

  • 它仍然有几个问题。其中一种可能是:如果我们在同一日期以不同的价格重复了行,那么应该为所有这些行报告相同的最大值,但您的解决方案并没有考虑到这一点。
  • 为了让它更健壮,也许这样会更好:df1 %>% group_by(data_hora) %>% mutate(max_price = max(Preco)) %>% ungroup() %>% arrange(data_hora) %>% group_by(date = as.Date(data_hora)) %>% mutate(day_high = cummax(max_price))
  • 那会有所不同,我不确定这是 OP 想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 2019-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
相关资源
最近更新 更多