查找每组最大滚动次数

时间:2017-10-13 00:40:38

标签: r dplyr

好我正在使用时间序列数据。我每天使用dplyr进行分组。然后在每一天的小组中,我希望找到滚动的最大值。我需要知道那个特定的行值是否是当天的最大值,如果是,那么我想我需要打印当前的最大值,直到遇到下一个最大值。

到目前为止我的程序如下:

day.group <- new.df %>%
  dplyr::mutate(day = format(Date, "%d")) %>%
  dplyr::mutate(RunID = data.table::rleid(day)) %>%
  group_by(RunID) %>%
  dplyr::mutate(max = runMax(Close , 1))    #Borrow run max from TTR package
  #dplyr::mutate(day.high = ifelse(Close > max,1, 0))

这很接近......但要找到滚动的最大值。我需要始终在任何给定点找到白天的最大值。我正在使用runMax,滚动回顾1天。这没有用......因为即使我将回看设置为当天的最大行,我也会将最后一行与第一行进行比较,而rest = NA。

基本上我需要将当前行与第一行中的所有先前行进行比较,然后逐行进行比较。

excel是这样的:

=MAX($F$2:F3)

在滚动基础上查找所有最大值,并在第一行中设置$ F $ 2进行比较。这将始终打印每行的当前最大值,直到遇到新的最大值。我需要将它放在我的dplyr代码中。

虚拟数据:

  Close day RunID   output
114.19  1   1   
114.31  1   1   114.31
114.22  1   1   114.31
114.09  1   1   114.31
114.28  1   1   114.31
114.19  1   1   114.31
114.25  1   1   114.31
114.22  1   1   114.31
114.25  1   1   114.31
114.13  1   1   114.31
114.03  1   1   114.31
114.28  1   1   114.31
114.19  1   1   114.31
114.25  1   1   114.31
114.22  1   1   114.31
114.34  1   1   114.34
114.19  1   1   114.34
114.19  1   1   114.34
114.16  1   1   114.34
114 1   1   114.34
114.06  1   1   114.34
114 1   1   114.34
114.06  1   1   114.34
114.25  1   1   114.34
114.16  1   1   114.34
114.31  1   1   114.34
114.44  1   1   114.44
114.53  1   1   114.53
114.59  1   1   114.59
114.75  1   1   114.75
114.75  1   1   114.75
114.75  1   1   114.75
114.91  1   1   114.91
114.72  2   2   114.91
114.64  2   2   114.91
114.59  2   2   114.91
114.52  2   2   114.91

1 个答案:

答案 0 :(得分:1)

read.csv(text="Close,day,RunID,output
114.75,1,1,114.75
114.75,1,1,114.75
114.75,1,1,114.75
114.91,1,1,114.91
114.72,2,2,114.91
114.64,2,2,114.91
114.59,2,2,114.91
114.52,2,2,114.91", header=T) -> data

cummax(data$Close) 

返回

114.75 114.75 114.75 114.91 114.91 114.91 114.91 114.91

这似乎与您的输出列匹配。