R для сортировки текстовых данных [дубликат]

Если вы не можете редактировать эту часть кода, где был определен ваш dict, вы все равно можете заказать его в любой момент, как хотите:

from collections import OrderedDict

order_of_keys = ["key1", "key2", "key3", "key4", "key5"]
list_of_tuples = [(key, your_dict[key]) for key in order_of_keys]
your_dict = OrderedDict(list_of_tuples)
15
задан PAC 11 February 2013 в 19:36
поделиться

6 ответов

Ну, у меня здесь нет проблем:

df <- data.frame(v=1:5, x=sample(LETTERS[1:5],5))
df

#   v x
# 1 1 D
# 2 2 A
# 3 3 B
# 4 4 C
# 5 5 E

df <- df[order(df$x),]
df

#   v x
# 2 2 A
# 3 3 B
# 4 4 C
# 1 1 D
# 5 5 E
36
ответ дан juba 19 August 2018 в 02:35
поделиться

Используйте функцию order:

set.seed(1)
DF <- data.frame(ID= sample(letters[1:26], 15, TRUE),
                 num = sample(1:100, 15, TRUE),
                 random = rnorm(15),
                 stringsAsFactors=FALSE)
DF[order(DF[,'ID']), ]
   ID num      random
10  b  27  0.61982575
12  e   2 -0.15579551
5   f  78  0.59390132
11  f  39 -0.05612874
1   g  50 -0.04493361
2   j  72 -0.01619026
14  j  87 -0.47815006
3   o 100  0.94383621
9   q  13 -1.98935170
8   r  66  0.07456498
13  r  39 -1.47075238
15  u  35  0.41794156
4   x  39  0.82122120
6   x  94  0.91897737
7   y  22  0.78213630

Другое решение будет использовать функцию orderBy из пакета doBy:

> library(doBy)
> orderBy(~ID, DF)
3
ответ дан Jilber Urbina 19 August 2018 в 02:35
поделиться
#sort dataframe by col
sort.df <- with(df,  df[order(sortbythiscolumn) , ])

#can also sort by more than one variable: sort by col1 and then by col2
sort2.df <- with(df, df[order(col1, col2) , ])

#sort in reverse order
sort2.df <- with(df, df[order(col1, -col2) , ])
6
ответ дан koenbro 19 August 2018 в 02:35
поделиться
  • 1
    Я не думаю, что это совершенно ясно, что col1 должен быть df$col1 здесь. Я был бы рад, если бы вы могли отредактировать эту часть. И вы, вероятно, могли бы добавить приятное использование with здесь! – Arun 11 February 2013 в 19:48
  • 2
    (+1) Я предпочел бы использовать df[with(df, order(col1, col2)),], но оба они выглядят одинаково. – Arun 11 February 2013 в 19:54

Это действительно связано с ответом @ Ramnath, но я не могу комментировать, поскольку у меня пока нет достаточной репутации. Вы также можете использовать функцию arrange из пакета dplyr так же, как пакет plyr.

library(dplyr)
arrange(DF, ID, desc(num))
0
ответ дан nathaneastwood 19 August 2018 в 02:35
поделиться

Функция arrange в пакете plyr упрощает сортировку по нескольким столбцам. Например, сначала сортировка DF на ID, а затем уменьшение на num, вы можете написать

plyr::arrange(DF, ID, desc(num))
5
ответ дан Ramnath 19 August 2018 в 02:35
поделиться

Функция order () не работает, когда столбец имеет уровни или коэффициент. Он работает правильно, когда stringsAsFactors = FALSE используется в создании data.frame.

0
ответ дан vondoRishi 19 August 2018 в 02:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: