Как сортировать фрейм данных в R
Я новичок в R и хочу отсортировать фрейм данных под названием "веса". Вот подробности:
>str(weights)
'data.frame': 57 obs. of 1 variable:
$ attr_importance: num 0.04963 0.09069 0.09819 0.00712 0.12543 ...
> names(weights)
[1] "attr_importance"
> dim(weights)
[1] 57 1
> head(weights)
attr_importance
make 0.049630556
address 0.090686474
all 0.098185517
num3d 0.007122618
our 0.125433292
over 0.075182467
Я хочу Сортировать по убывающему порядку attr_importance, но я также хочу сохранить соответствующие имена строк.
пробовал:
> weights[order(-weights$attr_importance),]
но это дает мне "цифровой" обратно.
Я хочу, чтобы фрейм данных вернулся-который сортируется по attr_importance и имеет соответствующие имена строк неповрежденными. Как я могу это сделать?
спасибо продвижение.
3 ответов
С вашими данными.рамка имеет только один столбец, вам нужно установить drop=FALSE
чтобы предотвратить удаление измерений:
weights[order(-weights$attr_importance),,drop=FALSE]
# attr_importance
# our 0.125433292
# all 0.098185517
# address 0.090686474
# over 0.075182467
# make 0.049630556
# num3d 0.007122618
вот большое сравнение по данным.сортировка кадров:
как отсортировать фрейм данных по столбцам?
использование моего теперь предпочтительного решения arrange
:
dd <- data.frame(b = factor(c("Hi", "Med", "Hi", "Low"),
levels = c("Low", "Med", "Hi"), ordered = TRUE),
x = c("A", "D", "A", "C"), y = c(8, 3, 9, 9),
z = c(1, 1, 1, 2))
library(plyr)
arrange(dd,desc(z),b)
b x y z
1 Low C 9 2
2 Med D 3 1
3 Hi A 8 1
4 Hi A 9 1
rankdata.txt
regno name total maths science social cat
1 SUKUMARAN 400 78 89 73 S
2 SHYAMALA 432 65 79 87 S
3 MANOJ 500 90 129 78 C
4 MILYPAULOSE 383 59 88 65 G
5 ANSAL 278 39 77 60 O
6 HAZEENA 273 45 55 56 O
7 MANJUSHA 374 50 99 52 C
8 BILBU 408 81 97 72 S
9 JOSEPHROBIN 374 57 85 68 G
10 SHINY 381 70 79 70 S
z <- data.frame(rankdata)
z[with(z, order(-total+ maths)),] #order function maths group selection
z
z[with(z, order(name)),] # sort on name
z