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*-)?(.+)”