将字符串拆分为列

将字符串拆分为列

我有一列有点混乱的价值观

   Col1
   ----------------------------------------
   B-Lipotropin(S)...............874 BTETLS
   IgE-Dandelion(S).............4578 BTETLS
   Beta Gamma-Globulin..........2807 BTETLS
   Lactate, P
   Phospholipid .........8296 BTETLS

我该如何将这些值分成三列
    Col1                        Col2         Col3
    -----------------------------------------------
    B-Lipotropin(S)             874          BTETLS
    IgE-Dandelion(S)            4578         BTETLS
    Beta Gamma-Globulin         2807         BTETLS
    Lactate, P
    Phospholipid                8296         BTETLS

感谢任何帮助。

最佳答案

您也可以为此使用tidyr:

library(tidyr)

dat <- read.table(text="B-Lipotropin(S)...............874 BTETLS
IgE-Dandelion(S).............4578 BTETLS
Beta Gamma-Globulin..........2807 BTETLS
Lactate, P
Phospholipid .........8296 BTETLS",
sep=";", stringsAsFactors=F, col.names = 'Col1')

dat %>%
  separate(Col1, c('Col1', 'Col2'), '\\.+', extra = 'drop') %>%
  separate(Col2, c('Col2', 'Col3'), ' ', extra = 'drop')

#                                    Col1 Col2   Col3
# 1                       B-Lipotropin(S)  874 BTETLS
# 2                      IgE-Dandelion(S) 4578 BTETLS
# 3                   Beta Gamma-Globulin 2807 BTETLS
# 4                            Lactate, P <NA>   <NA>
# 5                         Phospholipid  8296 BTETLS

编辑:您也可以使用separate(Col1, paste0('Col', 1:3), '([^,] )|(\\.+)', extra = 'drop')一步完成

关于regex - 将字符串拆分为列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31550932/

10-12 12:30