【发布时间】:2020-07-21 14:24:53
【问题描述】:
我有以下数据:
Group Subject Lab LabValue Visit Baseline Count
1 001 Lab1 10 Day 1 Y 1
1 001 Lab1 11 Day 2 2
1 001 Lab1 12 Day 30 3
1 002 Lab1 11 Day 1 Y 1
1 002 Lab1 12 Day 30 2
2 005 Lab1 9 Day 1 Y 1
2 005 Lab1 16 Day 2 2
2 005 Lab1 11 Month 1 3
2 006 Lab1 18 Day 1 Y 1
2 006 Lab1 10 Day 2 2
我想创建两个表:
第一个表格显示 Lab1 的基线值变化,计算访问时的平均值,并使用该特定访问的新患者子集重新计算基线:
Visit NumberSubjects VisitMean BaselineMean MeanChangeFromBaseline
Baseline 4 12 12 .
Day 2 3 12.3 13 -0.67
Day 30 2 12 10.5 +1.5
Month 1 1 11 9 +2
第二个表允许选择将第 1 个月没有访问的所有受试者的最后访问“推送”到第 1 个月的行(即受试者 001、002 和 005):
Visit NumberSubjects VisitMean BaselineMean MeanChangeFromBaseline
Baseline 4 12 12 .
Month 1 4 11.25 12 -0.75
(对于科目 001 和 002,第 30 天的值成为第 1 个月的值;对于科目 006,第 2 天的值成为第 1 个月的值)。
这很复杂,但我想看看是否有使用 dplyr 的方法。
我相信我可以使用以下代码为每个主题选择最后一个值:
do.call("rbind",
by(df, INDICES=df$Subject, FUN=function(DF) DF[which.max(DF$count), ]))
任何关于我如何创建这两个表的见解将不胜感激。
【问题讨论】: