R 使用正则表达式分隔列

R 使用正则表达式分隔列,r,regex,database,dataframe,tidyverse,R,Regex,Database,Dataframe,Tidyverse,我很难找到正确的正则表达式来将一列分隔为两列 这是我的例子 Col 1 8.3 algo y algo mas 我想要这个 Col 1 Col 2 8.3 algo y algo mas 我一直在尝试这个代码 library(tidyverse) base <- base %>% separate(col 1, into c("col 2", "col 3"), sep = "\\s") 库(tidyverse) 基数% 分离(第1列,分为c(“第2列

我很难找到正确的正则表达式来将一列分隔为两列

这是我的例子

Col 1
8.3 algo y algo mas
我想要这个

Col 1    Col 2
8.3       algo y algo mas
我一直在尝试这个代码

library(tidyverse)
    base <- base %>%
separate(col 1, into c("col 2", "col 3"), sep = "\\s")
库(tidyverse)
基数%
分离(第1列,分为c(“第2列”、“第3列”),sep=“\\s”)

为了安全起见,我认为最好用易于识别的字符替换数字后面的每个空格


df[,'Col 1']您可以尝试
stringr
rebus
中的函数:

df <- data.frame(Col_1 = "8.3 algo y algo mas")

library(stringr)
library(rebus)
str_match(df$Col_1, pattern = capture(DGT %R% DOT %R% DGT) %R%
                              SPC %R%
                              capture(one_or_more(or(SPC, LOWER))))

因此,整个前提取决于第1列是非空白值,第2列是其余的?您需要“into”具有与分隔字符串一样多的名称。如果您使用“\\s”,它将把它分成5个而不是2个。如果您确定列之间有3个或更多空格,请尝试
sep=“\\s{3,}”
。根据需要调整值。感谢您的回答,但有一个问题,当我运行代码时,列将点之前的第一个数字分隔开。可能是我把你的代码弄错了。我在这个R环境中是个新手。是的,我应该注意点作为分隔符不是很好,因为原始数据中已经有点了。我换了分隔符,请让我知道这是否适合你。谢谢你的回答,这非常有帮助
#      [,1]                  [,2]  [,3]             
# [1,] "8.3 algo y algo mas" "8.3" "algo y algo mas"