计算中出现的连续值高于阈值r .

  • 本文关键字:高于 阈值 连续 计算 r dplyr
  • 更新时间 :
  • 英文 :


我有三个人每天的总销售额数据。我想计算每天超过70次销售的次数。然后我想要计算每个事件的长度(事件将是当连续天数超过70时,例如,当每天的销售额超过70时,事件将连续5天,或者当每天的销售额超过70时,事件将连续2天)。我想一个列,分配事件的长度(例如5 5天,2 2天),当值低于70它应该是0。我希望能够比较不同的人之间的事件的长度。

我可以计算发生次数(下面的代码),但我很难计算连续几天的事件。

set.seed(1234) 
#Load packages
library(dplyr)
library(lubridate)
# Create data
Date <- seq(as.Date("2010-01-01"), as.Date("2020-01-31"), by="days")
Tim_Sales <- sample(1 : 100, 3683, replace=TRUE) 
John_Sales <- sample(1 : 100, 3683, replace=TRUE) 
Rupert_Sales <- sample(1 : 100, 3683, replace=TRUE) 
# Make dataframe
df <- data.frame(Date, Tim_Sales, John_Sales, Rupert_Sales)
# Identify occurences above 70 sales
df_occurrences <- df %>%
group_by(Date) %>%
summarise_all(funs(sum(. >70))) %>%
ungroup
df_occurrences

此方法使用ifelse语句和mutate来基于一组条件创建新列。

如果销售人员的销售额超过70,则从70中减去他或她的销售额。否则,这一列等于零。您可以在帮助文件中阅读更多关于ifelse语句的信息,通过输入?ifelse来访问。

library(tidyverse)
df_occurrences <- df %>%
mutate(Tim_70plus= ifelse(Tim_Sales > 70, Tim_Sales- 70, 0),
John_70plus= ifelse(John_Sales > 70, John_Sales- 70, 0),
Rupert_70plus= ifelse(Rupert_Sales > 70, Rupert_Sales- 70, 0))

相关内容

最新更新