我有一个数据库,其中个人使用不同类型的事件进行调节,我想评估当前事件发生前7天内高强度事件的比例是否影响了他们在当前事件中的反应。
数据库中的行是事件,每个事件都有一个单独的ID变量(ID.2(和一个强度分类(intensity.code,低/中/高(。
我已经有了一个代码,可以计算过去一周每个人发生的事件数(其中APW是每周发生的事件(:
ACdatas <- ACdatas %>%
group_by(ID.2) %>%
mutate(
APW = sapply(Datetime, function(d) sum(between(as.numeric(difftime(d, Datetime[Datetime < d], units = "days")), 0, 7)))
) %>% ungroup()
现在,我想计算一下在过去一周内,每个人的高强度事件在总事件中所占的比例。
以下是我的数据集中相关字段的子集(实际数据集中有50个人和5900条ish记录(:
head(ACdatas)
> Datetime ID.2 Intensity.code
> 1 2019-05-25 11:57 139 Medium
> 2 2019-05-20 19:42 139 High
> 3 2019-05-21 20:12 139 High
> 4 2019-05-26 17:27 139 Low
> 5 2019-05-23 9:13 139 Low
> 6 2019-05-22 16:18 139 Medium
> 7 2019-06-10 17:27 152 Low
> 8 2019-06-09 9:13 152 Low
> 9 2019-06-08 16:18 152 Low
> 10 2019-06-08 17:00 152 High
我试图在用于计算一周内行动次数的mutate函数中添加一个比例计算(如上(,但还没有成功!任何帮助都将不胜感激!
一个很棒的朋友帮我解决了这个问题,我想我会把答案发布在这里,以防能帮助其他人!首先,计算上周的行动次数
library(dplyr)
ACdatas <- ACdatas %>%
group_by(ID.2) %>%
mutate(
APW = sapply(Datetime, function(d) sum(between(as.numeric(difftime(d, Datetime, units = "mins")), 1, 10080)))
) %>% ungroup()
然后计算上周的高强度动作
ACdatas <- ACdatas %>%
group_by(ID.2) %>%
mutate(
HIE = sapply(Datetime, function(d) sum(between(as.numeric(difftime(d, Datetime, units = "mins")), 1, 10080) & Intensity.code == "High"))
) %>% ungroup()
然后计算过去一周高强度的比例
ACdatas <- ACdatas %>%
mutate(PHIE = HIE/APW)