2016-04-13 81 views
3

我有一個數據集:如何分割一個字符串與tidyr ::獨立於R並保留分隔符字符串的值?

crimes<-data.frame(x=c("Smith", "Jones"), charges=c("murder, first degree-G, manslaughter-NG", "assault-NG, larceny, second degree-G")) 

我使用tidyr:分開的收費欄上用火柴分裂「G」,

crimes<-separate(crimes, charges, into=c("v1","v2"), sep="G,") 

這種分裂我的專欄,但是移除分隔符「G」。我想在結果欄拆分中保留「G」。

我所需的輸出是:

x   v1      v2 
Smith  murder, first degree-G manslaughter-NG 
Jones  assault-NG    larceny, second degree-G 

任何建議表示歡迎。

+2

你想要的輸出是什麼? –

+2

'sep =「(?<= G),」'? –

+2

看着數據,看起來像'sep =',''將是實際的選擇。 – alistaire

回答

4

UPDATE

這是你要求什麼。請記住,你的數據不整潔(V1和V2具有每列內不止一個變量)

A<-separate(crimes,charges,into=c("V1","V2"),sep = "(?<=G,)") 
A 
     x      V1      V2 
1 Smith murder, first degree-G,   manslaughter-NG 
2 Jones    assault-NG, larceny, second degree-G 

更簡單的方法來獲得保持「G」或「NG」是使用正如alistaire所說的那樣。

A<-separate(crimes, charges, into=c("v1","v2"), sep = ', ') 

這給

 x   v1    v2 
1 Smith murder-G manslaughter-NG 
2 Jones assault-NG  larceny-G 

如果你想保持分離的data.frame(使用 - )

separate(A, v1, into = c("v3","v4"), sep = "-") 

,讓

 x  v3 v4    v2 
1 Smith murder G manslaughter-NG 
2 Jones assault NG  larceny-G 

你需要爲v2列再次執行此操作。我不知道你是否想保持分離,請發佈你的預期輸出,以使我的答案更具體。

+0

對不起,我的示例沒有包含我的數據的實際情況,它與逗號混合在一起收費。因此,「G」是必要的,因爲提取器字符串與存在的「,」不同。 – TDog

+0

而我的理想輸出是: x v1 v2 1 Smith謀殺-G誤殺-UN – TDog

+0

巨大的道具@Matias Andina。這很好。現在進一步清潔。如您所述,我的數據不整潔。還沒有。 – TDog

相關問題