首页 > 解决方案 > 基于特定空间的正则表达式 - R (dplyr::separate)

问题描述

我想根据特定空间分隔一列。

例如,我不想在每个空间中分开,但只有在空间满足一定条件时才分开。

我试图将满足条件的每个空间分开,但这会删除空间和条件。例如,如果我尝试删除前面有一个字母的每个空格,然后是一个数字,这会删除字母、空格和数字。

在我尝试使用与 dplyr 分开的代码中,但如果有另一个最佳解决方案,我会采取!

提前致谢!

代码

library(tidyverse)

df <- tibble(
column = c("Current Assets 3a 10.001", "Cash and Equivalents 2b 1.009", "Debt 2.050" )
)


df %>% 
  dplyr::separate(value,
           into = c("column1","column2","column3"),
           sep = 'insert regex pattern here')

#Ideally i would want something like that

tibble(
  column1 = c("Current Assets", "Cash and Equivalents", "Debt"),
  column2 = c("3a", "2b", NA),
  column3 = c(10.001, 1.009, 2.050)
  
)

标签: rregexdplyr

解决方案


您可以在tidyr::extract.

tidyr::extract(df, column,  c("column1","column2","column3"), 
               '(.*?)\\s(\\d[a-z])?\\s?(\\d+\\.\\d+)', convert = TRUE)

#  column1              column2 column3
#  <chr>                <chr>     <dbl>
#1 Current Assets       "3a"      10.0 
#2 Cash and Equivalents "2b"       1.01
#3 Debt                 ""         2.05

推荐阅读