将字符串转换为整洁的小标题

Z. *_*ang 1 r tidyverse

> dd <- tibble("Temper: 36.6?  Pulse:76 bpm RR: 16bpm BP?148/58 mmHg")
> dd
# A tibble: 1 x 1
  `"Temper: 36.6?  Pulse:76 bpm RR: 16bpm BP?148/58 mmHg"`
  <chr>                                                    
1 Temper: 36.6?  Pulse:76 bpm RR: 16bpm BP?148/58 mmHg    
> ddtarget <- tibble(Temper=36.6,Pulse=76,RR=16,SBP=148,DBP=58)
> ddtarget
# A tibble: 1 x 5
  Temper Pulse    RR   SBP   DBP
   <dbl> <dbl> <dbl> <dbl> <dbl>
1   36.6    76    16   148    58
Run Code Online (Sandbox Code Playgroud)

我有一个dd并且想要一个ddtarget;如何使用地图或其他 tidyverse 函数来制作它?

Ron*_*hah 5

我们可以rename先列(因为它的名字很奇怪),在单独的行中获取数据,以空格分割,然后是大写字母,在不同的列中以冒号分割数据,最后使用pivot_wider.

library(dplyr)
library(tidyr)

dd %>%
  rename(col = `"Temper: 36.6?  Pulse:76 bpm RR: 16bpm BP?148/58 mmHg"`) %>%
  separate_rows(col, sep = "\\s+(?=[A-Z])") %>%
  separate(col, into = c('name', 'value'), sep = ':|?') %>%
  pivot_wider()

# A tibble: 1 x 4
#  Temper   Pulse  RR       BP         
#  <chr>    <chr>  <chr>    <chr>      
#1 " 36.6?" 76 bpm " 16bpm" 148/58 mmHg
Run Code Online (Sandbox Code Playgroud)