Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中每个日期间隔的事件数之和_R_Date_Statistics_Sum - Fatal编程技术网

R中每个日期间隔的事件数之和

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对每个开始日期和结束日期进行分组,并变异一

我有一个具有大量时间间隔的实际数据,即事件开始日期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