2017-01-31 4 views
0

данные я работаю на выглядит следующим образом:Использование tidyr объединить несколько столбцов

Cust no. Chg1 Chg2 Chg3 Chg4 Ctot1 Ctot2 Ctot3 Ctot4 Size Name 
61  A B  C D  2  4  5 6  2 XA 

Нужный выход:

Cust no. Chg Ctot Size Name 
61  A  2 2 XA 
61  B  3 2 XA 
61  C  4 2 XA 
61  D  5 2 XA 

Использование gather(key,value,Ctot1:Ctot4), выход

Cust no. Chg Key Value Size Name 
61  A  Ctot1 2 2 XA 
61  A  Ctot2 3 2 XA 
61  A  Ctot3 4 2 XA 
61  A  Ctot4 5 2 XA 

Некоторые советы по этому вопросу будут очень полезными.

ответ

-1

Мы можем использовать melt из data.table для этой цели, как это может занять множественным measurepatterns

library(data.table) 
melt(setDT(df1), measure = patterns("^Chg", "^Ctot"), 
      value.name = c("Chg", "Ctot"))[, variable := NULL][] 
# Custno. Size Name Chg Ctot 
#1:  61 2 XA A 2 
#2:  61 2 XA B 4 
#3:  61 2 XA C 5 
#4:  61 2 XA D 6 
+0

Да, это работает. Благодаря! – sreenila

+0

@sreenila Благодарим вас за отзыв. Вы также можете проверить [здесь] (http://stackoverflow.com/help/someone-answers) – akrun

Смежные вопросы