À l'aide de gsub pour extraire la chaîne de caractères avant de l'espace blanc dans la R
J'ai une liste d'anniversaires qui ressemble à quelque chose comme ceci:
dob <- c("9/9/43 12:00 AM/PM", "9/17/88 12:00 AM/PM", "11/21/48 12:00 AM/PM")
Je veux juste attraper le calendrier la date à partir de cette variable (c'est à dire tout laisser tomber après la première occurrence de white-space).
Voici ce que j'ai essayé jusqu'à présent:
dob.abridged <- substring(dob,1,8)
dob
[1] "9/9/43 1" "9/17/88 " "11/21/48"
dob.abridged <- gsub(" $","", dob.abridged, perl=T)
> dob.abridged
[1] "9/9/43 1" "9/17/88" "11/21/48"
Donc mon code fonctionne pour le calendrier des dates de longueur 6 ou 7, mais pas de longueur 8. Tous les pointeurs sur une plus efficace regex pour une utilisation avec gsub qui peut gérer les dates du calendrier de longueur 6, 7 ou 8?
Merci.
Vous devez vous connecter pour publier un commentaire.
Pas besoin de sous-chaîne, il suffit d'utiliser gsub:
Un espace (
), alors n'importe quel caractère (
.
) un nombre quelconque de fois (*
) jusqu'à la fin de la chaîne ($
). Voir ?regex pour apprendre les expressions régulières.sub
est suffisante, car il n'y a qu'une seule chaîne en position de fin.J'utilise souvent
strsplit
pour ces sortes de problèmes mais j'ai beaucoup aimé comment de simples Romain a répondu. J'ai pensé qu'il serait intéressant de comparer Romain de la solution à unstrsplit
réponse:Voici un
strsplit
solution:À l'aide de la microbenchmark paquet et
dob <- rep(dob, 1000)
avec les données d'origine:Le gagnant clair sur un Win 7 machine est le
gsub
regex de Romain. Merci pour la réponse et l'explication Romain.La bibliothèque
stringr
contient une fonction adaptée à ce problème.word(dob,-1)