使用单独的方法仅考虑 R 中的第一个点来拆分列

Lau*_*ura 5 r stringr tidyr

这是我的数据框:

df <- tibble(col1 = c("1. word","2. word","3. word","4. word","5. N. word","6. word","7. word","8. word"))
Run Code Online (Sandbox Code Playgroud)

我需要使用单独的函数分成两列,并将它们重命名为Numbers和 其他称为Words. 我已经这样做了,但它不起作用:

df %>% separate(col = col1 , into = c('Number','Words'), sep = "^. ")
Run Code Online (Sandbox Code Playgroud)

问题是第五个有 2 个点。我不知道如何处理有关正则表达式的问题。

有什么帮助吗?

Nel*_*Gon 3

一种tidyverse方法是首先清理数据,然后分离。

 df %>% 
      mutate(col1 = gsub("\\s.*(?=word)", "", col1, perl=TRUE)) %>% 
      tidyr::separate(col1, into = c("Number", "Words"), sep="\\.")
Run Code Online (Sandbox Code Playgroud)

结果:

# A tibble: 8 x 2
  Number Words
  <chr>  <chr>
1 1      word 
2 2      word 
3 3      word 
4 4      word 
5 5      word 
6 6      word 
7 7      word 
8 8      word 
Run Code Online (Sandbox Code Playgroud)