2016-04-13 6 views
3

У меня есть набор данных:Как разбить строку с tidyr :: separate в 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» является использование sep=", " как сказано 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 Убийство убийцы-G manslaughter-NG – TDog

+0

Огромные реквизиты @ Матиас Андина. Это отлично поработало. Теперь о дальнейшей уборке. Как вы отметили, мои данные не аккуратны. Пока нет. – TDog