2017-01-26 17 views
1

У меня есть столбец с разными названиями:R: Как отделить значения только после второго пространства

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

После второго места, он начинает имя второго человека. Например, Эшли, Тремонд - человек, а УИЛЬЯМС, Карла, другой.

Я пробовал:

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

но он делит на всех пространствах, поэтому я получаю:

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

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

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

Как я могу отделить только после первого места, так что я получаю ?:

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

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

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

заранее спасибо за вашу помощь

+2

'strsplit (X," [^,] ")' дает желаемый результат. Он разбивает строку, где пробелу не предшествует запятая. – ytk

+1

Вы хотите отменить его для сохранения вектора: 'unlist (strsplit (X, split =" [Az] [Az] "))' –

+0

@RyanMorton, если вы пропустите вызов 'unlist', он сохраняет группировку уровень имен в исходном входе и соответствует ожидаемому результату – Aramis7d

ответ

0

комментария работ Конечно @ YTK, но в случае, если вы хотите, чтобы избежать регулярных выражений, вы можете быть подлыми и сделать

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

, которая возвращает:

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

P.S. Я использую df <- data.frame(X = c("Ashley, Tremond WILLIAMS, Carla", "Claire, Daron", "Luw, Douglas CANSLER, Stephan")) для ввода данных в кадр данных.

+0

спасибо, но я пишу точно такой же код, и он не работает для меня, и я не понимаю его, что означает%>%? –

+0

@NataliaP это способ синтаксиса 'piping', проверьте пакет' magrittr'. – Aramis7d