我正在处理我想以某种格式排列的临床数据,以便稍后使用它建模。我当前的数据集如下所示:
# create a data frame
df <- data.frame(ID = c(1,1,1,2,2,3,3,3),
DOSE = c(100, NA, NA, 200, NA, 300, NA, NA),
TIME = c(NA, 1, 2, NA, 3, NA, 1, 2),
Drug_concentration = c(NA, 5, 6.5, 3, 4, 8, 10, 12))
ID | 剂量 | 时间 | 药物浓度 |
---|---|---|---|
1 | 一百 | 。 | 。 |
1 | 。 | 1 | 五 |
1 | 。 | 第二章 | 六、五 |
1 | 。 | 三 | 八 |
第二章 | 两百 | 。 | 。 |
第二章 | 。 | 1 | 三 |
第二章 | 。 | 三 | 四 |
三 | 三百 | 。 | 。 |
三 | 。 | 1 | 八 |
三 | 。 | 第二章 | 10个 |
三 | 。 | 三 | 十二岁 |
正如您所看到的,患者ID的第一行仅包含剂量,其他变量(时间,药物浓度)用句号填充。在初始行之后,剂量列得到句号,其他变量被填充。
我的问题:某些患者在整个治疗过程中发生了剂量变化。我想将这些剂量变化添加到我的数据集中,但不知道如何使用R有效地做到这一点。假设患者1在TIME = 2时将剂量从100 mg更改为50 mg,患者3在TIME = 2时将剂量从300 mg更改为500 mg。我希望我的数据集如下所示:
| ID|剂量|时间|药物浓度|
| --------------|--------------|--------------|--------------|
| 1|一百|。|。|
| 1|。|1|五|
| 1|五十|。|。|
| 1|。|第二章|六、五|
| 1|。|三|八|
| 第二章|两百|。|。|
| 第二章|。|1|三|
| 第二章|。|三|四|
| 三|三百|。|。|
| 三|。|1|八|
| 三|五百|。|。|
| 三|。|第二章|10个|
| 三|。|三|十二岁|
我试过使用dyplyr,但我不是那么好,在R可悲
3条答案
按热度按时间fnvucqvd1#
下面是使用
tidyverse
的一种方法:假设我们有:
我将为缺失的行添加TIME = 0,因为我希望确保这些行首先对每个ID进行排序。我还调整
dose_changes
TIME值,以确保它们的TIME X已排序,以便它出现在TIME X的任何测量之前(因为药物变化隐含地发生在之前的某个未指定的时间)。然后我合并dose_changes
数据,排列y ID和TIME,填充(默认填充方向)缺失的剂量,最后删除行w/o Drug_concentration observations。yhxst69z2#
你想要的输出格式不适合R建模,但我假设你有一个很好的理由要求它。我过去确实使用过命令行分析包,它们以奇怪的方式要求数据。
不管怎样,给你。
创建于2023-04-01使用reprex v2.0.2
PS.你给出的生成
df
的第一组代码是错误的,它没有生成你粘贴在它下面的表。下次请仔细检查。你的代码也生成了NA而不是点,不像它下面的表。我为这个例子保留了NA,但如果你的数据实际上有点,然后你需要在第13行和第14行之间插入它来创建NA并将数据转换成正确的类型。68bkxrlz3#
您可以使用
which
获取行,然后使用rbind
插入行。