R 寻找最大和区间
我有每小时一次的消费数据R 寻找最大和区间,r,loops,dplyr,R,Loops,Dplyr,我有每小时一次的消费数据 Date Hour Flow 2017-06-01 7 15.25 2017-06-01 8 5.25 2017-06-01 9 16.45 2017-06-01 10 31.25 2017-06-01 11 11.25 2017-06-01 12 25.33 2017-06-01 13 27.28 2017-06
Date Hour Flow
2017-06-01 7 15.25
2017-06-01 8 5.25
2017-06-01 9 16.45
2017-06-01 10 31.25
2017-06-01 11 11.25
2017-06-01 12 25.33
2017-06-01 13 27.28
2017-06-01 14 17.43
2017-06-01 15 19.23
我想指出这两个小时是一天中金额最大的两个小时
Date Hour Flow Mark
2017-06-01 7 15.25 0
2017-06-01 8 5.25 0
2017-06-01 9 16.45 0
2017-06-01 10 31.25 0
2017-06-01 11 11.25 0
2017-06-01 12 25.33 1
2017-06-01 13 27.28 1
2017-06-01 14 17.43 0
2017-06-01 15 19.23 0
实际数据超过1000天
谢谢看起来您正在试图找到最大的连续总和 这里有一种破解方法——我相信还有更优雅的解决方案:
library(dplyr)
df %>%
mutate(dummy_flow = lead(Flow),
total = Flow + dummy_flow,
Mark = ifelse(total == max(total, na.rm = TRUE), 1, 0),
Mark = ifelse(lag(Mark) == 1 | Mark == 1, 1, 0)) %>%
replace(is.na(.), 0) %>%
select(-c(dummy_flow, total))
下面是一个使用
数据的选项。表:
library(data.table)
DT[, Mark := {
f <- Flow + shift(Flow, fill=0)
i <- which.max(f)
replace(integer(.N), c(i, i-1L), 1L)
}, Date]
你好,格尔巴,欢迎来到SO。你能详细说明一下吗。你指的是多少钱?为什么在6月1日有两个标记值,而任务是标记最大的金额(除非出现平局,否则应该只存在一次)?最后,你能分享一下你迄今为止所做的尝试吗?这将有助于每个人了解你正在尝试做什么,并帮助我们了解你到底被困在哪里。你的方法到底在哪里失败?请帮助我们帮助你。我做了一个小的修正,我有我一直在寻找的解决方案。df%%>%mutate(dummy_flow=lead(flow),total=flow+dummy_flow,)%%>%group_by(Date)%%>%mutate(max_mark=as.integer(total==max(total))%%>%replace(is.na(“.”,0)%%>%select(-c(dummy_flow,total))感谢replace(is.na(.),0)-->as.Date.numeric(value)中的错误:“来源”必须是一个完美的解决方案。这就是我要找的。我想我必须切换到data.table
library(data.table)
DT <- fread("Date Hour Flow
2017-06-01 7 15.25
2017-06-01 8 5.25
2017-06-01 9 16.45
2017-06-01 10 31.25
2017-06-01 11 11.25
2017-06-01 12 25.33
2017-06-01 13 27.28
2017-06-01 14 17.43
2017-06-01 15 19.23")