2013-10-11 7 views
9

io sono un principiante con R. Ora, ho un vettore in un data.frame come questoOttenere le corde prima della virgola con R

city 
Kirkland, 
Bethesda, 
Wellington, 
La Jolla, 
Berkeley, 
Costa, Evie KW172NJ 
Miami, 
Plano, 
Sacramento, 
Middletown, 
Webster, 
Houston, 
Denver, 
Kirkland, 
Pinecrest, 
Tarzana, 
Boulder, 
Westfield, 
Fair Haven, 
Royal Palm Beach, Fl 
Westport, 
Encino, 
Oak Ridge, 

voglio pulirlo. Quello che voglio sono tutti i nomi delle città prima della virgola. Come posso ottenere il risultato in R? Grazie!

risposta

11

È possibile utilizzare gsub con un po 'di regexp:

cities <- gsub("^(.*?),.*", "\\1", df$city) 

questo funziona, troppo:

cities <- gsub(",.*$", "", df$city) 
+0

+1 Stavo per suggerire quasi esattamente la stessa ... 'gsub ("^ (+) ,. * "," \\ 1 ", df $ city)' –

2

si potrebbe usare regexpr per trovare la posizione del primo comma in ogni elemento e utilizzare substr per sniparli in questo:

x <- c("London, UK", "Paris, France", "New York, USA") 

substr(x,1,regexpr(",",x)-1) 
[1] "London" "Paris" "New York" 
4

Solo per divertimento, è possibile utilizzare strsplit

> x <- c("London, UK", "Paris, France", "New York, USA") 
> sapply(strsplit(x, ","), "[", 1) 
[1] "London" "Paris" "New York" 
2

Questo metodo funziona così:.

x <- c("London, UK", "Paris, France", "New York, USA") 

library(qdap) 
beg2char(x, ",") 

## > beg2char(x, ",") 
## [1] "London" "Paris" "New York"