使用R

时间:2018-07-17 18:41:27

标签: r for-loop dataframe matrix

试图分析和可视化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循环,但是我不能完全正常工作。

这是我第一次使用任何一种编程语言,所以请随时指出其他看起来很有趣的东西!

0 个答案:

没有答案