R代码可检测多个患者随时间变化的变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R代码可检测多个患者随时间变化的变量相关的知识,希望对你有一定的参考价值。
我有一个数据集,每位患者有多行,其中每一行代表4个月中的1周时间。有一个变量grade
可以取1
,2
或3
的值,我想检测单个患者的等级何时增加(1到2、1到3或2到3 )在任何时候(结果将是一个是/否变量)。我可以编写一个函数来做到这一点,但我敢打赌,我可以做一些巧妙的函数编程来利用现有的R函数。这是下面的示例数据集。谢谢!
df=data.frame(patient=c(1,1,1,2,2,3,3,3,3),period=c(1,2,3,1,3,1,3,4,5),grade=c(1,1,1,2,3,1,1,2,3))
我想要的是以下结果的数据帧:
data.frame(patient=c(1,2,3),grade.increase=c(0,1,1))
答案
library(dplyr)
df %>%
arrange(patient, period) %>%
mutate(grade.increase = case_when(grade > lag(grade) ~ TRUE,TRUE ~ FALSE)) %>%
group_by(patient) %>%
summarise(grade.increase = max(grade.increase))
将检查前一个值的lag
与case_when
结合使用,我们可以识别每个等级。增加。
总结每位患者的最大成绩增加,因为布尔计算将FALSE视为0,将TRUE视为1,因此获得了所需的结果。
以上是关于R代码可检测多个患者随时间变化的变量的主要内容,如果未能解决你的问题,请参考以下文章