Я в основном делаю то, что описано в этом вопросе , однако я пытаюсь сохранить исходный порядок столбца month
.Окружным способом было бы добавить начальный ноль к однозначным числам.Я пытаюсь найти способ, не делая этого.
Текущий код:
library(dplyr)
df <- structure(list(parameters = c("temp", "temp", "temp", "temp", "temp", "temp", "temp", "temp", "temp", "temp", "temp", "temp", "temp", "temp", "temp"), month = c("2", "2", "2", "5", "5", "5", "8", "8", "8", "11", "11", "11", "annual", "annual", "annual")), class = "data.frame", row.names = c(NA, -15L))
do.call(bind_rows, by(df, df[ ,c("month", "parameters")], rbind, ""))
Функция by
выглядит так, как будто она приводит ваши определенные индексы к факторам и конвертирует month
фактор показывает, что он делает уровни в следующем порядке: 11, 2, 5, 8, annual
.Если бы он был числовым, он бы упорядочил их правильно, но с включенным annual
этот столбец должен быть как символ.
Если я сначала преобразовал его в коэффициент и упорядочил уровни, мой код вставитNA
с.
df$month <- ordered(df$month, levels = c("2", "5", "8", "11", "annual"))
do.call(bind_rows, by(df, df[ ,c("month", "parameters")], rbind, ""))
Токовый выход:
parameters month
1 temp 11
2 temp 11
3 temp 11
4
5 temp 2
6 temp 2
7 temp 2
8
9 temp 5
10 temp 5
11 temp 5
12
13 temp 8
14 temp 8
15 temp 8
16
17 temp annual
18 temp annual
19 temp annual
20
Желаемый выход:
parameters month
1 temp 2
2 temp 2
3 temp 2
4
5 temp 5
6 temp 5
7 temp 5
8
9 temp 8
10 temp 8
11 temp 8
12
13 temp 11
14 temp 11
15 temp 11
16
17 temp annual
18 temp annual
19 temp annual
20