2017-01-26 31 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'調用,它會保留這個分組,否則你需要取消它來維護vector:'unlist(strsplit(X,split =「[Az] [Az]」))' –

+0

@RyanMorton原始輸入中的名稱級別,並匹配預期的輸出 – 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 

附:我使用df <- data.frame(X = c("Ashley, Tremond WILLIAMS, Carla", "Claire, Daron", "Luw, Douglas CANSLER, Stephan"))來輸入數據幀。

+0

謝謝,但是我寫的代碼完全一樣,它不適合我,而且我也不太瞭解它,%>%意味着什麼? –

+0

@NataliaP這是一種「管道」語法,請查看'magrittr'包。 – Aramis7d