【发布时间】:2021-04-14 22:38:04
【问题描述】:
我有一个患者数据框,格式为每张胸部 X 光片一行。我的列包括胸部 X 光片的特定测量值、胸部 X 光片的日期,然后还有几个对于给定患者相同的附加列(如最终结果)。
例如:
+--------+------------+----------+------------+-------------+-----+-------+---------+
| pat_id | index_date | cxr_date | delta_date | cxr_measure | age | admit | outcome |
+--------+------------+----------+------------+-------------+-----+-------+---------+
| 1 | 1/2/2020 | 1/2/2020 | 0 | 0.1 | 55 | 1 | 0 |
| 1 | 1/2/2020 | 1/3/2020 | 1 | 0.3 | 55 | 1 | 0 |
| 1 | 1/2/2020 | 1/3/2020 | 1 | 0.5 | 55 | 1 | 0 |
| 2 | 2/1/2020 | 2/2/2020 | 1 | 0.2 | 59 | 0 | 0 |
| 2 | 2/1/2020 | 2/3/2020 | 2 | 0.9 | 59 | 0 | 0 |
| 3 | 1/6/2020 | 1/6/2020 | 0 | 0.7 | 66 | 1 | 1 |
+--------+------------+----------+------------+-------------+-----+-------+---------+
我想重新格式化表格,以便每位患者一行。我认为我的结束表应该如下所示,每个变量都变成:cxr_measure_# 其中# 是delta_date。在真实的数据集中,我会有很多这样的列(# 的范围从 -5 到 +30)。如果在同一个 delta_date 上有两个行/值,理想情况下我会取平均值。
+--------+------------+----------------+---------------+---------------+--------------+-----+-------+---------+
| pat_id | index_date | first_cxr_date | cxr_measure_0 | cxr_measure_1 | cxr_measure_2 | age | admit | outcome |
+--------+------------+----------------+---------------+---------------+--------------+-----+-------+---------+
| 1 | 1/2/2020 | 1/2/2020 | 0.1 | 0.4 | NA | 55 | 1 | 0 |
| 2 | 2/1/2020 | 2/2/2020 | NA | 0.2 | 0.9 | 59 | 0 | 0 |
| 3 | 1/6/2020 | 1/6/2020 | 0.7 | NA | NA | 66 | 1 | 1 |
+--------+------------+----------------+---------------+---------------+--------------+-----+-------+---------+
有没有一种简单的方法可以在这两个表之间进行基本重塑?我已经玩了一些 pivot_longer 和 pivot_wider,但不确定如何(1)处理在变量名中获取 delta_date 以及(2)如果有两个重叠的日期如何取平均值。也很好奇这是否更容易在 python 中完成(大部分数据管理使用 pandas,但随后在 R 中进行了一些额外的数据清理和分析)。
【问题讨论】:
-
必须与
dput(head(data))共享您的可重现数据片段,以便其他人可以使用它来更有效地帮助您。 -
@AnoushiravanR 这里共享的数据是完全可重现的。例如,将第一个表格复制到剪贴板,然后运行
read.table(text=readClipboard(), sep="|", fill = TRUE, comment.char = "+", head = TRUE, strip.white = TRUE) -
@Onyambu 很抱歉这是我的错误。我以前从未使用过此代码来阅读此类表格。我非常感谢这个宝贵的教训。非常感谢。
-
我会记住以后使用 dput(head(data)) 如果它使事情变得更容易(或者包括 Onyambu 的函数供参考!)我的实际数据要混乱得多,所以我有使用将制表符分隔的数据或 Excel 复制/粘贴转换为上述 ascii 格式的站点创建了一个具有代表性的数据集。
标签: r pivot-table reshape