【发布时间】:2023-01-25 19:30:59
【问题描述】:
我有一个非常大的数据框,它记录了多次随访的 MRI 扫描中的肿瘤大小。
假设我有p:
id debut_extramea_xy_dimension_MR fu1_extramea_xy_dimension_MR fu2_extramea_xy_dimension_MR fu3_extramea_xy_dimension_MR
1 134 14x14 14x14 12.5x10.5 12.5x10.5
2 434 24 x 19 x 13 24 x 17 24 x 17 21 x 16
3 437 40 x 30 20 x 20 mm 20 x 20 25 x 18
4 440 26 x 24 26 x 24 26 x 24 26 x 24
5 498 13x6.4 14.8x8.7 19.4x12.3 21.7x13.5
如您所见,数据记录了肿瘤的二维“xy”轴数据。但是,有两个问题:
(1)那些注册数据的人不小心记录了一些患者的三维,“xyz”轴。这在p$debut_extramea_xy_dimension_MR的第2行中进行了演示,对应于p$id == 434
和
(2)在某些情况下,测量单位被意外记录,例如。 “mm”如p$fu1_extramea_xy_dimension_MR第3行,对应p$id == 437
我需要 filter 和 pivot_longer 所以我获得了一个包含三列的数据框:(1) id,(2) 在什么后续和 (3) 什么错误。我需要手动进入数据库来改变它,所以这些信息会很有帮助。
预期产出
id name value
1 434 debut 24 x 19 x 13
2 437 fu1 20 x 20 mm
数据
p <- structure(list(id = c(134L, 434L, 437L, 440L, 498L), debut_extramea_xy_dimension_MR = c("14x14",
"24 x 19 x 13", "40 x 30", "26 x 24", "13x6.4"), fu1_extramea_xy_dimension_MR = c("14x14",
"24 x 17", "20 x 20 mm", "26 x 24", "14.8x8.7"), fu2_extramea_xy_dimension_MR = c("12.5x10.5",
"24 x 17", "20 x 20", "26 x 24", "19.4x12.3"), fu3_extramea_xy_dimension_MR = c("12.5x10.5",
"21 x 16", "25 x 18", "26 x 24", "21.7x13.5")), row.names = c(NA,
-5L), class = "data.frame")
【问题讨论】:
标签: r dataframe dplyr filter pivot