【问题标题】:Splitting a single column in r into 4 separate columns将 r 中的单个列拆分为 4 个单独的列
【发布时间】:2018-06-25 21:37:15
【问题描述】:

我需要将单个数据框列 (ID) 拆分为五个单独的列(A、B、C、D、E)。列需要按以下方式拆分:

  • A - 第一个字母
  • B - 直到第二个字母的所有数字
  • C - 直到最后一个字母的所有字母
  • D - 最后一个数字
  • E - 最后一个字母

举个例子:

之前

ID Conc
1 A01HGF1a  132
2 D02SDV2b  453

之后

A B C D E Conc
1 A 01 HGF 1 a  132
2 D 02 SDV 2 b  453

我尝试使用 tidyr 中的 separate(),但无法弄清楚如何正确使用正则表达式。非常感谢任何帮助!

这是我迄今为止的尝试

`separate(df, ID, into = c("A", "B", "C", "D","E"), sep = "(^.)(\\d+)(\\S+)(\\d+)(\\S+)")`

【问题讨论】:

    标签: r regex tidyr


    【解决方案1】:

    您可以在此处使用sub 作为基本 R 选项:

    df$A <- sub("^(\\w).*", "\\1", df$ID)
    df$B <- sub("^\\w(\\d+).*", "\\1", df$ID)
    df$C <- sub("^\\w\\d+(\\D+).*", "\\1", df$ID)
    df$D <- sub(".*?(\\d+)\\D+$", "\\1", df$ID)
    df$E <- sub(".*?(\\D+)$", "\\1", df$ID)
    df
    
            ID Conc A  B   C D E
    1 A01HGF1a  132 A 01 HGF 1 a
    2 D02SDV2b  453 D 02 SDV 2 b
    

    Demo

    【讨论】:

    • 完美运行。谢谢!我是 regex 的新手,它花费的时间比我预期的要长。我真的很感激。
    猜你喜欢
    • 2022-11-23
    • 2015-04-03
    • 2021-10-26
    • 2022-11-23
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    相关资源
    最近更新 更多