gpt4 book ai didi

r - 如何计算每个组(学生契约(Contract))的日期时间之间的时差?

转载 作者:行者123 更新时间:2023-12-04 04:46:32 26 4
gpt4 key购买 nike

我有一个特定的问题;我有以下格式的数据:

#   USER_ID SUBMISSION_DATE CONTRACT_REF
1 1 20/6 1:00 W001
2 1 20/6 2:00 W002
3 1 20/6 3:30 W003
4 4 20/6 4:00 W004
5 5 20/6 5:00 W005
6 5 20/6 6:00 W006
7 7 20/6 7:00 W007
8 7 20/6 8:00 W008
9 7 20/6 9:00 W009
10 7 20/6 10:00 W0010

现在我需要以某种方式计算不同提交之间的时间差(唯一可识别)。

换句话说:
我有一个 投稿表 ,在这个表中,有所有用户的所有提交。我需要找到一种方法来计算 之间每个唯一的 STUDENT-CONTRACT 元组的时间差。第 n 个分配和第 (n-1) 个分配 .

另请注意,每个新用户的新分配都必须为零。所以输出将如下所示:
#   USER_ID SUBMISSION_DATE CONTRACT_REF  TIME_DIFFRENCE
1 1 20/6 1:00 W001 0
2 1 20/6 2:00 W002 3600
3 1 20/6 3:30 W003 5400
4 4 20/6 4:00 W004 3600
5 5 20/6 5:00 W005 0
6 5 20/6 6:00 W006 3600
7 7 20/6 7:00 W007 0
8 7 20/6 8:00 W008 3600
9 7 20/6 9:00 W009 3600
10 7 20/6 10:00 W0010 3600

请注意,时间可能不是以秒为单位,而是任何合适的时间。

我的想法:
1)我认为这将需要 as.POSIXct 某处,以便 R 知道如何处理时间
2) 这可能涉及一些包,例如 plyr ,但我完全迷失在文档中,并且很难找到示例。

非常感谢您的所有回复!

最好的,
雅库布

最佳答案

这是一个尝试。首先,获取数据:

dat <- read.csv(text="USER_ID,SUBMISSION_DATE,CONTRACT_REF
1,20/6 1:00,W001
1,20/6 2:00,W002
1,20/6 3:30,W003
4,20/6 4:00,W004
5,20/6 5:00,W005
5,20/6 6:00,W006
7,20/6 7:00,W007
7,20/6 8:00,W008
7,20/6 9:00,W009
7,20/6 10:00,W0010",header=TRUE)

从契约(Contract)引用中获取数字并对数据进行排序
dat$CR_NUM <- as.numeric(gsub("W","",dat$CONTRACT_REF))
dat <- with(dat,dat[order(USER_ID,CR_NUM),])

将日期转换为 POSIXct 数字表示
dat$SD_DATE <- as.numeric(with(dat,as.POSIXct(SUBMISSION_DATE,format="%d/%m %H:%M")))

使用 ave 计算开始时为 0 的时间差
dat$TIME_DIFF <- with(dat, ave(SD_DATE, USER_ID, FUN=function(x) c(0,diff(x)) ))

结果:
# not showing the calculated columns
dat[-c(4:5)]

USER_ID SUBMISSION_DATE CONTRACT_REF TIME_DIFF
1 1 20/6 1:00 W001 0
2 1 20/6 2:00 W002 3600
3 1 20/6 3:30 W003 5400
4 4 20/6 4:00 W004 0
5 5 20/6 5:00 W005 0
6 5 20/6 6:00 W006 3600
7 7 20/6 7:00 W007 0
8 7 20/6 8:00 W008 3600
9 7 20/6 9:00 W009 3600
10 7 20/6 10:00 W0010 3600

关于r - 如何计算每个组(学生契约(Contract))的日期时间之间的时差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18092072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com