2017-06-09 2 views
1

J'ai dataframe comme des caractères spéciaux comme ci-dessousR: Remplacer les caractères spéciaux

Key Q1 Q2 
22 aSk aÃ…Â k 
23 aSk aÃ…Â k 
24 aSk aÃ…Â k 

Je voudrais remplacer le « Ã ... Â k » (y compris l'espace entre k) au T2 avec « ask » d'avoir fait comme ci-dessous (comme Q1)

Key Q1 Q2 
22 aSk aSk 
23 aSk aSk 
24 aSk aSk 

J'ai essayé d'utiliser gsub fonction R

df$Q2 <- gsub("[Ã…Â]", "S", df$Q2) 

mais je suis una ble pour enlever l ' « espace » et obtenir le résultat ci-dessous à la place

Key Q1 Q2 
22 aSk aSSS k 
23 aSk aSSS k 
24 aSk aSSS k 

Puis-je savoir quel est le problème avec mon code et comment supprimer l' « espace » et « SSS » dans R?

(Le mot lui-même dans mon fichier brut en csv est "aA k". Cependant, il semble que "aà ...  k" dans R)

Merci.

Répondre

1

On peut correspondre à un ou plusieurs caractères qui ne sont pas alpbabets et le remplacer par "S"

df$Q2 <- sub("[^A-Za-z]+", "S", df$Q2) 
df$Q2 
#[1] "aSk" "aSk" "aSk" 

Ou nous saisir uniquement les caractères alphabétiques en tant que groupe (([A-Za-z]*) depuis le début (*) de la chaîne, correspondent aux caractères suivants qui ne sont pas alphabétiques et remplacent par la référence arrière du groupe capturé suivi de "S"

sub("^([A-Za-z]*)[^A-Za-z]+", "\\1S", df$Q2) 
#[1] "aSk" "aSk" "aSk" 
+0

Cette locale est-elle dépendante? C'est à dire. - '' 'ou' 'va-t-il se situer entre' A-Z' dans certains endroits où ce sont des caractères standard? – thelatemail

+0

@thelatemail Je ne suis pas sûr. Utiliser R 3.4.0 – akrun

+0

@thelatemail Si vous remplacez par [[: alpha:]] ', cela résout-il le problème de votre côté? si nous utilisons '[A-z]', il inclura d'autres caractères mais pas avec [[A-Za-z] '. Quoi qu'il en soit, il est un peu étrange que vous obteniez une sortie différente – akrun