首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >法术之间的平均时间间隔

法术之间的平均时间间隔
EN

Stack Overflow用户
提问于 2021-11-02 10:20:39
回答 1查看 38关注 0票数 0

我有一个如下的数据帧,并想创建一个基于事件最大扩散的时间扩散变量。

代码语言:javascript
复制
 A<- c('1244', '1244', '1244', '1245', '1245', '1245', '1245', '1245', '1245', '1245')
 sequence<- c(1,1,0, 1,1,0,0,1,1,1)
   # 1= lived locally and 0 lived internationally 
date<- c('19/Oct/12', '19/Oct/12', '20/Oct/12', '19/Oct/11', '19/Oct/11', '22/Nov/12', 
  '24/Nov/12', '29/Nov/12','2/Dec/12', '29/Dec/12')

 df<- data.frame(A,sequence, date)

我想计算一下这些人在本地和国际上的平均时间分布。例如,如果我们看到一个人1244她/他有序列110 (即,他们在本地和国际上分别生活在两个法术和一个国际法术中,如果我们想要计算所有法术中的avg_local_timespread=总时间/法术中的事件计数为0day/2(这是最后日期开始日期(因此,0 days= 19/Oct/12-19/Oct/12)和avg_international_timespread= 0/1=0 (20/Oct/12-20/Oct/12)之间的差异)

对于1245人来说是1100111,所以他们在当地生活了两个法术,第一个法术是11,第二个法术是111。因为我想要得到本地的平均时间分布,在这种情况下,它是第一个法术(11)+最后一个法术(111)/total法术(5)的开始日期和结束日期之间的时间差。因此avg_local_timespread= 6天(30+0)/5和avg_international_timespread= 1天(2/2)(‘24/11/12’-‘22/11/12’)

我期望得到如下输出:

代码语言:javascript
复制
 A  avg_local_timespread avg_international_timespread total_local_timespread 
1244         0                     0                         0
1245         6                     1                         30
                                                        
         total_international_timespread    

1244              0
1245              2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-02 12:24:48

我无法复制您所需的输出,因为我不理解您在问题中提供的计算。但我相信这会让你开始。

代码语言:javascript
复制
library(data.table)
library(lubridate)
# convert to data.table format
setDT(df)
# convert dates to date-format
df[, date := lubridate::dmy(date, locale = "English_United States")]
# create sequence-groups by A
df[, seq_group := rleid(sequence == 1), by = .(A)][]
# summarise
ans <- df[, .(start = min(date), end = max(date)), by = .(A, seq_group, sequence)]
# add diration of spell
ans[, duration := end - start]
#       A seq_group sequence      start        end duration
# 1: 1244         1        1 2012-10-19 2012-10-19   0 days
# 2: 1244         2        0 2012-10-20 2012-10-20   0 days
# 3: 1245         1        1 2011-10-19 2011-10-19   0 days
# 4: 1245         2        0 2012-11-22 2012-11-24   2 days
# 5: 1245         3        1 2012-11-29 2012-12-29  30 days
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69808738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档