Сортировать кадр данных, используя порядок внешних факторов в R - PullRequest
2 голосов
/ 31 января 2020

проблема с хихиканьем. Простой пример Предположим, у меня есть следующее:

df <- data.frame(x = as.factor(1:10),
                 y = rnorm(10, 0, 1))

x_order = c("3", "1", "5", "7", "8", "9", "2", "6", "10", "4")

Я хотел бы изменить порядок строк df так, чтобы значения в df$x появлялись в порядке, указанном в векторе x_order. Есть ли простой способ сделать это, пожалуйста?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 31 января 2020

Мы можем преобразовать 'x_order' в integer и использовать в качестве индекса строки

df1 <- df[as.integer(x_order),]

В общем случае мы можем использовать match

df1 <- df[match(x_order, df$x),]

Или преобразовать столбец 'x' в factor с levels, указанным как 'x_order and do order`

df[order(factor(df$x, levels = x_order)),]
1 голос
/ 31 января 2020

Вот еще одно базовое решение R, где вы можете использовать rownames из df, чтобы изменить порядок строк df, т. Е.

dfout <- df[match(x_order,rownames(df)),]

, чтобы

> dfout
    x           y
3   3  0.08897425
1   1  0.96173905
5   5  0.81658185
7   7  0.19946419
8   8 -0.21296035
9   9  0.16236732
2   2 -0.32710972
6   6  0.11647613
10 10  0.26953532
4   4  1.17435024
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...