2017-01-26 8 views
1

ich eine Spalte mit verschiedenen Namen haben:R: Wie Werte trennen erst nach dem zweiten Raum

X <- c("Ashley, Tremond WILLIAMS, Carla", "Claire, Daron", "Luw, Douglas CANSLER, Stephan") 

Nach dem zweiten Raum, startet er den Namen der zweiten Person. Zum Beispiel ist Ashley, Tremond eine Person und WILLIAMS, Carla eine andere.

Ich habe versucht:

strsplit(X, "\\,\\s|\\,|\\s") 

aber es teilt durch alle Räume, so dass ich bekommen:

strsplit(X, "\\,\\s|\\,|\\s") 
[[1]] 
[1] "Ashley" "Tremond" "WILLIAMS" "Carla" 

[[2]] 
[1] "Claire" "Daron" 

[[3]] 
[1] "Luw"  "Douglas" "CANSLER" "Stephan" 

Wie kann ich erst nach dem ersten Raum zu trennen, so dass ich ?:

[1] "Ashley, Tremond" "WILLIAMS, Carla" 

[[2]] 
[1] "Claire, Daron" 

[[3]] 
[1] "Luw, Douglas" "CANSLER, Stephan" 

Vielen Dank im Voraus für Ihre Hilfe

+2

'strsplit (X," [^,] ")' gibt die gewünschte Ausgabe. Sie teilt die Zeichenfolge auf, wobei einem Leerzeichen kein Komma vorangestellt ist. – ytk

+1

Sie sollten es aufheben, um den Vektor zu verwalten: 'unlist (strsplit (X, split =" [Az] [Az] ")) –

+0

@RyanMorton, wenn Sie den' unlist'-Aufruf überspringen, wird die Gruppierung beibehalten Ebene der Namen in der ursprünglichen Eingabe und entspricht der erwarteten Ausgabe – Aramis7d

Antwort

0

Natürlich Kommentar Werke @ YTK, aber im Fall, dass Sie die Regex zu vermeiden, kann Sie hinterhältig und tun

df2 <- df %>% 
    separate(col = X, into=c("person1a","person1b","person2a","person2b"),sep= " ") %>% 
    unite(col = "person1", person1a, person1b, sep=" ") %>% 
    unite(col = "person2", person2a, person2b, sep=" ") 

, die zurückgibt:

> df2 
      person1   person2 
1 Ashley, Tremond WILLIAMS, Carla 
2 Claire, Daron   NA NA 
3 Luw, Douglas CANSLER, Stephan 

P. S. Ich benutze df <- data.frame(X = c("Ashley, Tremond WILLIAMS, Carla", "Claire, Daron", "Luw, Douglas CANSLER, Stephan")), um die Eingabe in einen Datenrahmen zu machen.

+0

Danke, aber ich schreibe den exakt gleichen Code und es funktioniert nicht für mich, und ich verstehe es nicht wirklich, was bedeutet der%>%? –

+0

@NataliaP es ist eine Art der "Piping" -Syntax, schau dir das 'magritr'-Paket an. – Aramis7d

Verwandte Themen