如何将列名称中的单位分隔到 R 中的另一列中

问题描述 投票:0回答:1

表格的列中有单位。如何将列名称中的单位分离到另一列中?

示例:

主题 剂量(毫克) 最高温度(小时)
2001 200 5
2002 200 5

这就是我想要的。

主题 剂量 剂量_单位 最高温度 Tmax_unit
2001 200 毫克 200 h
2002 200 毫克 200 h
r tidyverse
1个回答
0
投票

这是使用

pivot_longer/wider
separate_wider_regex
的方法:

dat <- data.frame(
  SUBJID = c(2001L, 2002L),
  `Dose (mg)` = c(200L, 200L),
  `Tmax (h)` = c(5L, 5L),
  check.names = FALSE
)

library(tidyr)

dat |>
  pivot_longer(-SUBJID,
    names_to = "name_unit"
  ) |>
  separate_wider_regex(name_unit,
    patterns = c(name = "^.*?", " \\(", unit = ".*", "\\)")
  ) |>
  pivot_wider(
    names_from = name,
    values_from = c(unit, value),
    names_glue = "{name}_{.value}",
    names_vary = "slowest"
  )
#> # A tibble: 2 × 5
#>   SUBJID Dose_unit Dose_value Tmax_unit Tmax_value
#>    <int> <chr>          <int> <chr>          <int>
#> 1   2001 mg               200 h                  5
#> 2   2002 mg               200 h                  5
© www.soinside.com 2019 - 2024. All rights reserved.