0
Product    M
--------------
Brand1  2016m1
Brand1  2016m10
Brand1  2016m11
Brand1  2016m12
Brand1  2016m2
Brand1  2016m3
Brand1  2016m4
Brand1  2016m5
Brand1  2016m6
Brand1  2016m7
Brand1  2016m8
Brand1  2016m9
Brand2  2016m1
Brand2  2016m10
Brand2  2016m11
Brand2  2016m12
Brand2  2016m2
Brand2  2016m3
Brand2  2016m4
Brand2  2016m5
Brand2  2016m6
Brand2  2016m7
Brand2  2016m8
Brand2  2016m9

I have some time series with two brands Brand1 and Brand2. My intention is to transform this table like table below.In fact column Product should remain the same and the second column M should be transformed in ascending order like table below.

Product   M
------------
Brand1  2016m1
Brand1  2016m2
Brand1  2016m3
Brand1  2016m4
Brand1  2016m5
Brand1  2016m6
Brand1  2016m7
Brand1  2016m8
Brand1  2016m9
Brand1  2016m10
Brand1  2016m11
Brand1  2016m12
Brand2  2016m1
Brand2  2016m2
Brand2  2016m3
Brand2  2016m4
Brand2  2016m5
Brand2  2016m6
Brand2  2016m7
Brand2  2016m8
Brand2  2016m9
Brand2  2016m10
Brand2  2016m11
Brand2  2016m12

So can anybody help me to transform this table ?

G5W
  • 36,531
  • 10
  • 47
  • 80
j235
  • 150
  • 1
  • 10

1 Answers1

1

We can use mixedsort from the gtools here.

DF$M <- ave(DF$M, DF$Product, FUN = gtools::mixedsort)
#   Product       M
#1   Brand1  2016m1
#2   Brand1  2016m2
#3   Brand1  2016m3
#4   Brand1  2016m4
#5   Brand1  2016m5
#6   Brand1  2016m6
#7   Brand1  2016m7
#8   Brand1  2016m8
#9   Brand1  2016m9
#10  Brand1 2016m10
#11  Brand1 2016m11
#12  Brand1 2016m12
#13  Brand2  2016m1
#14  Brand2  2016m2
#15  Brand2  2016m3
#16  Brand2  2016m4
#17  Brand2  2016m5
#18  Brand2  2016m6
#19  Brand2  2016m7
#20  Brand2  2016m8
#21  Brand2  2016m9
#22  Brand2 2016m10
#23  Brand2 2016m11
#24  Brand2 2016m12
markus
  • 25,843
  • 5
  • 39
  • 58