R中每个日期间隔的事件数之和
我有一个具有大量时间间隔的实际数据,即事件开始日期2014-10-1,事件结束日期2014-12-1,我还有一个参考数据集,用于记录每天是否发生特定事件,例如:如果2014-10-2和2014-11-3发生了事件,则记录为1,否则为0” 我想做的是在实际数据集中创建一个变量,该变量表示这些事件开始/结束日期之间的事件数之和,即,如果2014-10-1和2014-12-1之间发生了100个事件,则该车道的变量将为100 我知道在R中,我们可以使用dplyr对每个开始日期和结束日期进行分组,并变异一个新变量。有人能告诉我怎么做吗 非常感谢 用于简化时间逻辑R中每个日期间隔的事件数之和,r,date,statistics,sum,R,Date,Statistics,Sum,我有一个具有大量时间间隔的实际数据,即事件开始日期2014-10-1,事件结束日期2014-12-1,我还有一个参考数据集,用于记录每天是否发生特定事件,例如:如果2014-10-2和2014-11-3发生了事件,则记录为1,否则为0” 我想做的是在实际数据集中创建一个变量,该变量表示这些事件开始/结束日期之间的事件数之和,即,如果2014-10-1和2014-12-1之间发生了100个事件,则该车道的变量将为100 我知道在R中,我们可以使用dplyr对每个开始日期和结束日期进行分组,并变异一
library(lubridate)
starts <- ymd(df$ event_start_date)
ends <- ymd(df$ event_end_date)
days <- ymd(reference$date)
df$numEvents <- mapply(function(s, e) {
sum(reference$record[days %within% interval(s,e)])
}, starts, ends)
用于简化时间逻辑
library(lubridate)
starts <- ymd(df$ event_start_date)
ends <- ymd(df$ event_end_date)
days <- ymd(reference$date)
df$numEvents <- mapply(function(s, e) {
sum(reference$record[days %within% interval(s,e)])
}, starts, ends)
我必须为这个重新创建数据。。。请在将来使用?dput帮助给出一个可复制的示例 Defs: evt_df-一个包含两列的数据框,第一列包含日期,第二列包含0或1的数值,如果值为1,则表示在给定日期发生的事件 int_df-一个数据框,最初包含两列,分别为开始日期和结束日期,表示时间跨度 以下是原始数据: 编辑添加了重新创建数据的功能,以防有人想要分离更多数据
希望这能帮助您并让您了解流程方法我必须为此重新创建数据。。。请在将来使用?dput帮助给出一个可复制的示例 Defs: evt_df-一个包含两列的数据框,第一列包含日期,第二列包含0或1的数值,如果值为1,则表示在给定日期发生的事件 int_df-一个数据框,最初包含两列,分别为开始日期和结束日期,表示时间跨度 以下是原始数据: 编辑添加了重新创建数据的功能,以防有人想要分离更多数据
希望这有助于您理解流程方法这非常优雅,缺少了一些结束方括号和结束括号,尽管您在手机上涂了胭脂并用力推了推。。还是来自R gui的OG哈哈?看起来很简单,没有样本数据,我无法运行自己创建的疯狂道具!,所以我只是在文本字段中做的…为了简单起见,我应用了你的方法。。。干净多了。int_df$total_事件这是非常优雅的,缺少了一些结束方括号和结束括号,尽管你在手机上涂了所有的胭脂并按下了。。还是来自R gui的OG哈哈?看起来很简单,没有样本数据,我无法运行自己创建的疯狂道具!,所以我只是在文本字段中做的…为了简单起见,我应用了你的方法。。。干净多了。int_df$总事件数
library(plyr)
library(dplyr)
> new_df <- adply(int_df, 1, function(i){
s <- which(evt_df$date == i[['start_date']])
e <- which(evt_df$date == i[['end_date']])
sum(evt_df[seq(s, e), 2])
}, .id = NULL, .expand = T) %>% select(1, 2, total_events = 3)
> head(new_df)
start_date end_date total_events
1 2015-03-04 2015-03-19 11
2 2015-09-28 2017-03-06 270
3 2015-05-23 2015-06-07 13
4 2015-09-29 2017-01-28 250
5 2015-04-27 2015-05-12 6
6 2014-06-08 2014-06-22 4