Regex 如何删除一个字符串中的特殊字符、空格和修剪R中的字符变量
我在R中有一个小问题,变量是字符类型。数据框中的变量具有如下结构:Regex 如何删除一个字符串中的特殊字符、空格和修剪R中的字符变量,regex,r,Regex,R,我在R中有一个小问题,变量是字符类型。数据框中的变量具有如下结构: X1 ANGLO AUTOMOTRIZ S.A. MATRIZ AUTOMOTORES Y ANEXOS / AYASA ECUA - AUTO S.A. MATRIZ METROCAR S.A. 10 DE AGOSTO MOSUMI LA "Y" X2 ANGLOAUTOMOTRIZSAMATRIZ AUTOMOTORESYANEXOSAYASA ECUAAUTOSAMATRIZ METROCARSA10DEAGOSTO
X1
ANGLO AUTOMOTRIZ S.A. MATRIZ
AUTOMOTORES Y ANEXOS / AYASA
ECUA - AUTO S.A. MATRIZ
METROCAR S.A. 10 DE AGOSTO
MOSUMI LA "Y"
X2
ANGLOAUTOMOTRIZSAMATRIZ
AUTOMOTORESYANEXOSAYASA
ECUAAUTOSAMATRIZ
METROCARSA10DEAGOSTO
MOSUMILAY
我的问题是我需要一个不带/-“”
的新变量,并且字符串必须分组在一个不带空格的变量中,如下所示:
X1
ANGLO AUTOMOTRIZ S.A. MATRIZ
AUTOMOTORES Y ANEXOS / AYASA
ECUA - AUTO S.A. MATRIZ
METROCAR S.A. 10 DE AGOSTO
MOSUMI LA "Y"
X2
ANGLOAUTOMOTRIZSAMATRIZ
AUTOMOTORESYANEXOSAYASA
ECUAAUTOSAMATRIZ
METROCARSA10DEAGOSTO
MOSUMILAY
可以在R中进行此操作。谢谢。尝试
gsub
gsub( "\\.|/|\\-|\"|\\s" , "" , df$X1 )
#[1] "ANGLOAUTOMOTRIZSAMATRIZ" "AUTOMOTORESYANEXOSAYASA" "ECUAAUTOSAMATRIZ"
#[4] "METROCARSA10DEAGOSTO" "MOSUMILAY"
-匹配文本\\.
-或分隔符|
-匹配/
(无需转义)/
-匹配文字\\-
-
-匹配文字\”
“
-匹配空白\\s
gsub
是贪婪的,因此它会尝试尽可能多地匹配,并且它还被矢量化,因此您可以一次传递整个列。第二个参数是替换值,在本例中是”
,它用零替换所有匹配的字符。由于您也处理重音字符,我可以想到两个选项:
iconv
尝试将重音字符“音译”为ASCII字符Z <- c("ANGLO AUTOMOTRIZ S.A. MATRIZ", "AUTOMOTORES Y ANEXOS / AYASA",
"ECUA - AUTO S.A. MATRIZ", "METROCAR S.A. 10 DE AGOSTO", "MOSUMI LA \"Y\"",
"distribuir contenidos", "proponer autoevaluaciones", "como buzón de actividades")
备选案文2:请注意,“o”已转换为“o”
注:
- 为了方便起见,我决定只使用字符类
和[[:punct:]
李>[[:space:]
- 对于第一个选项,您需要
来识别perl=TRUE
字符类李>[[:ascii:]
- 选项1中的
表示“不”(因此,您可以将其理解为“查找任何非ASCII字符、空格或标点符号的内容,并将其替换为零)^
,
我该如何删除它!@Duck,这更难回答,而且取决于确切的编码等。请尝试此页面作为初学者,简单一点:gsub(“[^a-zA-Z0-9]”,“,df$X1)
^“角色是你最好的朋友@CarlWitthoft的观点很好,但如果我们沿着这条路线走下去,那么甚至可能是gsub('[:punt:][]|','',df$X1)
@AnandaMahto-听起来Duck在问如何从á
(即用a
替换它),而不是如何完全删除字符…+1代表iconv(Z,to=“ASCII//translatit”)
,感谢您将此添加为答案!