我有一个非常大的数据框,记录了多次随访时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)**在某些情况下,测量单位被意外记录,例如p$fu1_extramea_xy_dimension_MR
第3行中的“mm”,对应于p$id == 437
我需要filter
和pivot_longer
,以便获得包含三列的 Dataframe :(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")
1条答案
按热度按时间3htmauhk1#
这里有一个解决方案