У меня есть следующее df
, где: Name
отображает концепцию, за которую нужно платить, и Code
количество раз, которое Name
необходимо повторить для оптимизации процессов. Изначально это выглядит так:
Name Code
Tax 1
Gas 2
Tax 1
Gas 2
Tax 1
Lunch 2
Tax 1
Car 2
df = data.frame(Name = c('Tax', 'Gas', 'Tax', 'Gas', 'Tax', 'Lunch', 'Tax', 'Car'),
Code = rep(c(1,2)))
После повторения Gas
, Lunch
и Car
дважды это выглядит так:
Name Code
Tax 1
Gas 2
Gas 2
Tax 1
Gas 2
Gas 2
Tax 1
Lunch 2
Lunch 2
Tax 1
Car 2
Car 2
df = df[rep(seq_len(nrow(df)), df$Code),]
Я хотел бы изменить порядок строк, чтобы мой df
выглядел следующим образом, где df
просто сортируется по Code
таким образом 2
, 1
, 2
(каждая Tax
и Gas
, Tax
и Lunch
, Tax
и Car
являются одной группой):
Есть ли способ сделать это без каких-либо библиотек? Поскольку последний сценарий будет использоваться не только для меня, но и для начинающих на работе.
Я уже пробовал с:
df[order(factor(df$Code, levels = c(2,1,2))),]
а также добавив row.names
в качестве столбца к match
следующим образом: df[order(df$Code, df$row.names),]
, но, похоже, он не работает должным образом.
Также пытался ответить this и this , но не смог.