2017-01-26 5 views
1

後の値を分離する方法:Rは:私だけが異なる名前を持つ列を持っている第二の空間

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

第二空間の後に、それは二人の名前を開始します。例えば、Ashley、Tremondは人物、WILLIAMS、Carlaは別の人物です。

私が試してみました:

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

関連する問題