Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dplyr::基于“分离”-&引用;,但并非所有的眼见都是这样_R_Regex_Dplyr - Fatal编程技术网

dplyr::基于“分离”-&引用;,但并非所有的眼见都是这样

dplyr::基于“分离”-&引用;,但并非所有的眼见都是这样,r,regex,dplyr,R,Regex,Dplyr,我需要一些帮助来使用dplyr::separate来分隔下面数据中的列value data.frame( var = c("V0001", "V0001", "V0001", "V0001", "V0001"), value = c( "11- Rondônia", "12- Acre", "

我需要一些帮助来使用
dplyr::separate
来分隔下面数据中的列
value

  data.frame(
    var = c("V0001", "V0001", "V0001", "V0001", "V0001"),
    value = c(
      "11- Rondônia",
      "12- Acre",
      "13- Amazonas",
      "14- Roraima",
      'A relação de códigos encontra-se no arquivo:'
    )
  )
因此,我希望得到如下数据——注意,必须基于“-”进行分离。但是,我不能简单地键入
sep=“-”
,因为最后一行有“encontra se”一词。因此,必须在数字后面的“-”上进行分隔。我曾尝试使用正则表达式来实现这一点,但结果df也省略了前面的数字

 var v1                                           v2
1 V0001 11                                     Rondônia
2 V0001 12                                         Acre
3 V0001 13                                     Amazonas
4 V0001 14                                      Roraima
5 V0001 NA A relação de códigos encontra-se no arquivo:

有人能帮忙吗?

您可以使用
提取

library(tidyverse)
df %>%
  extract(value, c("v1", "v2"), '(?:(.*\\d)-)? ?(.+)')
    var v1                                           v2
1 V0001 11                                     Rondônia
2 V0001 12                                         Acre
3 V0001 13                                     Amazonas
4 V0001 14                                      Roraima
5 V0001    A relação de códigos encontra-se no arquivo:

我们可以使用trimws将所示字符从末端修剪掉。由于第一个字段仅包含数字,第二个字段修剪数字0-9以及空格和减号,因此第一个trimws修剪非数字\D

d %>% 
  mutate(V1 = trimws(value, white = "\\D"), 
         V2 = trimws(value, white = "[0-9 -]"))

非常感谢。这可能会成为一个问题,但最后一行的v2条目遗漏了句子开头的“a”。“能修好吗?”阿瑟卡瓦霍布里托肯定会的。请查看编辑对不起,再次打扰您,但在某些情况下,数字和连字符之间可能有空格。我已尝试使用
修复此问题(?:(.*\\d)\\s+-)?(.+)”
。这解决了这个具体问题,但把以前的问题搞砸了。我如何调整它才能工作?@ArthurCarvalhoBrito使用
(?:(.*\\d)\\s*-)?(.+)”