试图分析和可视化R中某些患者数据的医学生,现在需要帮助。
我有几个列表(不同研究组的患者),每个列表都包含一个带有日期的列。我已经使用difftime将这些日期转换为以天为单位的差,第一个日期是第0天。我想生成矩阵(或者可能是数据帧?),行数等于每行经过的天数列表中,我将在剩余的列中填写与这些日期有关的数据。
例如,list1是6位患者的列表,而$ DT列是我的日期(以天为单位的时差)。
list1[[6]]$DT
Time differences in days
0 36 321 405 526 532 925 1325 1521 1828 1996 2101 2166 2696
目标是为该列表中的每个对象生成一个矩阵,最终看起来像这样:
matrix6
[Date] [Lab A] [Lab B]
[48,] 48 1.23 4.56
[49,] NA NA NA
.....
[60,] 60 7.89 9.01
我可以使用for循环为单个患者完成此操作,但是我不知道如何在我所有列表中的所有患者中进行迭代。
以下是适用于单个患者的for循环:
nums <- as.numeric(list1[[6]]$DT)
timeline <- matrix(nrow=max(nums,na.rm=TRUE), ncol=3)
for (i in 1:length(list1[[6]]$DT){
timeline[nums[i],1] <- nums[i]
timeline[nums[i],2] <- list1[[6]]$labA[i]
timeline[nums[i],3] <- list1[[6]]$labB[i]
}
这将输出以下内容:
[1,] NA NA NA
[2,] 2 NA 1.23
[3,] NA NA NA
...
[47,] NA NA NA
[48,] 48 4.56 NA
[49,] NA NA NA
...
[66,] NA NA NA
关于如何使用列表中的所有患者生成这些时间表的任何建议(因此list1 [[1至6]])?我觉得我可能在那里需要另一个for循环,但是我不能完全正常工作。
这是我第一次使用任何一种编程语言,所以请随时指出其他看起来很有趣的东西!