有没有一个r函数可以用来把分数分成两行

  • 本文关键字:两行 有一个 函数 r
  • 更新时间 :
  • 英文 :


我有一个df,看起来像下表。我需要将血压生命体征行分为两个独立的生命体征行。读作";"收缩压";(较高的数字(和另一个读作"0"的数字;舒张压";(较低的数字(。

数字//tr>98日期/时间72日期/时间120/80[/tr>92日期/时间103日期/时间
患者 生命体征时间
1 氧气
1 心率
1 血压日期/时间
2 氧气
2 心率

tidyr:使用separate_rows

library(tidyverse)
dat %>%
separate_rows(Number)
# A tibble: 6 x 4
Patient Vital.sign     Number time     
<int> <chr>          <chr>  <chr>    
1       1 oxygen         98     date/time
2       1 Heart rate     72     date/time
3       1 Blood pressure 120    date/time
4       1 Blood pressure 80     date/time
5       2 Oxygen         92     date/time
6       2 Heart rate     103    date/time

我们可以在"数字"列上使用separate_rows

library(dplyr)
library(tidyr)
df1 %>%
separate_rows(Number, convert = TRUE) %>%
mutate(`Vital sign`= replace(`Vital sign`, 
`Vital sign` == "Blood pressure", 
c("systolic blood pressure", "diastolic blood pressure")))

-输出

# A tibble: 6 × 4
Patient `Vital sign`             Number time     
<int> <chr>                     <int> <chr>    
1       1 oxygen                       98 date/time
2       1 Heart rate                   72 date/time
3       1 systolic blood pressure     120 date/time
4       1 diastolic blood pressure     80 date/time
5       2 Oxygen                       92 date/time
6       2 Heart rate                  103 date/time

数据

df1 <- structure(list(Patient = c(1L, 1L, 1L, 2L, 2L), `Vital sign` = c("oxygen", 
"Heart rate", "Blood pressure", "Oxygen", "Heart rate"), Number = c("98", 
"72", "120/80", "92", "103"), time = c("date/time", "date/time", 
"date/time", "date/time", "date/time")), class = "data.frame", row.names = c(NA, 
-5L))

最新更新