R代码可检测多个患者随时间变化的变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R代码可检测多个患者随时间变化的变量相关的知识,希望对你有一定的参考价值。

我有一个数据集,每位患者有多行,其中每一行代表4个月中的1周时间。有一个变量grade可以取123的值,我想检测单个患者的等级何时增加(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))

将检查前一个值的lagcase_when结合使用,我们可以识别每个等级。增加。

总结每位患者的最大成绩增加,因为布尔计算将FALSE视为0,将TRUE视为1,因此获得了所需的结果。

以上是关于R代码可检测多个患者随时间变化的变量的主要内容,如果未能解决你的问题,请参考以下文章

用户定义函数将多个数据框导出到全局环境中

R,随时间变化作为因子。如何找到最接近某个时间的值?

matlab中变量名称怎样定义可随循环次数变化

使用字符串变量在 R 函数中传递多个变量信息

有没有办法让 NSFetchedResultsController 检测多个实体的变化?

typescript 处理多个手动触发的变化检测周期