2015-01-06 5 views
-1

Я видел несколько потоков на этом, например. How to sort a dataframe by column(s)?, но у меня все еще есть проблемы.R: Заказ кадра данных на нескольких столбцах

Я dataframe, countryLevCurrUnique следующим образом: countryLevCurrUnique

Country   Leverage Currency Count 
Afghanistan  500   USD 10 
Albania   500   EUR 10 
Algeria   200   GBP 10 
Algeria   200   USD 10 
Algeria   50   USD 10 
Algeria   500   USD 10 
Andorra   100   USD 10 
Andorra   200   EUR 10 

Я хочу, чтобы отсортировать эту матрицу по стране, то плечо, то валюты Я запустить следующее:
countryLevCurrUnique = countryLevCurrUnique[order(countryLevCurrUnique[,1], countryLevCurrUnique[,2],countryLevCurrUnique[,3]),]

Я хотел бы, чтобы результат был следующим:

Country   Leverage Currency Count 
Afghanistan  500   USD 10 
Albania   500   EUR 10 
Algeria   50   USD 10 
Algeria   200   GBP 10 
Algeria   200   USD 10 
Algeria   500   USD 10 
Andorra   100   USD 10 
Andorra   200   EUR 10 

Страна является символом, плечо является числовым, валюта является символом Я не могу понять, почему это не работает?

Благодаря

Майк

+2

Он должен работать 'df [with (df, order (Страна, плечо, валюта))]]. Каков ожидаемый результат на основе набора данных, который вы показали? Если у вас много столбцов 'df [do.call (order, df),]' Возможно, у вас есть столбцы «factor», и они упорядочены в соответствии с порядком уровней. – akrun

+0

@akrun, спасибо за ответ. Я обновил вопрос. Я пробовал именно это ('df [with (df, order (Country, Leverage, Currency)),]'), но он не сортируется, как мне бы хотелось – Mike

+0

Кроме того, 'arr (df, Country, Leverage , Currency) 'с загруженным dplyr. – Khashaa

ответ

1

Пакет dplyr делает это довольно просто.

library(dplyr) 
countryLevCurrUnique<-arrange(countryLevCurrUnique, Country, Leverage, Currency) 

если вы хотите поставить один или несколько столбцов в порядке убывания, положить desc() вокруг него функции arrange().

Смежные вопросы