2016-08-27 2 views
-2

У меня есть dataframe следующим образом:Как сортировать весь dataframe по содержанию одной строки в

Col1  Col2  Col3  Col4  Col5 

1794.7809 336.5778 0.2233495 0.53030000 5594.83998270378 
    28.7967 16.0021 2.6449000 81.8828  g 
    31.6036 11.7235 2.5185000 0.53030000  g 
162.0520 136.0310 4.0612000 0.03740000  g 
23.8172 9.5728  2.3385000 0.61470000  g 

Я хотел бы отсортировать весь dataframe на основе значений в первой строке (а именно: 1794,7809 336,5778 0,2233495 0,53030000 5594.83998270378), так что не только эта строка сортируется, но и все строки, соответствующие этим значениям, также расположены правильно. Любая помощь приветствуется.

Edit: Вывод должен выглядеть следующим образом:

Col3  Col4     Col2  Col1   Col5 

0.2233495 0.53030000  336.5778 1794.7809  5594.83998270378 
    2.6449000 81.8828   16.0021  28.7967   g 
    2.5185000 0.53030000  11.7235 31.6036   g 
4.0612000 0.03740000  136.0310 162.0520  g 
2.3385000  0.61470000  9.5728 23.8172   g 

(Примечание: Поиск по Google для этой проблемы была бесплодной) (Примечание: Часть уступки) Привет

+0

@ StevenBeaupré no, не работает. –

+0

Единственное, что вам не хватает здесь, это логика. Зачем вам сортировать кадры данных на основе строк? Какая польза от этого? Прошли ли вы через эту статью Хэдли Уикхем http://vita.had.co.nz/papers/tidy-data.pdf? –

+0

Вам нужно понять, почему фреймворк правильно определяется столбцами и строками, существует грамматика для определения переменных и наблюдений. Из типа сортировки, который вы хотите, вы полностью игнорируете грамматику. Какая цель это послужит? –

ответ

2

Предполагая, что там не является переменной фактором в исходном фрейме данных, вы можете использовать порядок в первом ряду, который

возвращает перестановку, которая ч перестраивает свой первый аргумент в по возрастанию или по убыванию

и применить результат на фрейме данных:

df[order(as.numeric(unlist(df[1,])))] 

#  Col3 Col4  Col2  Col1    Col5 
# 1 0.2233495 0.5303 336.5778 1794.7809 5594.83998270378 
# 2 2.6449000 81.8828 16.0021 28.7967    g 
# 3 2.5185000 0.5303 11.7235 31.6036    g 
# 4 4.0612000 0.0374 136.0310 162.0520    g 
# 5 2.3385000 0.6147 9.5728 23.8172    g 

Преобразования переменного фактора для символа должна быть довольно прямо вперед с функцией mutate_if от dplyr:

df %>% mutate_if(is.factor, as.character) 
+0

Спасибо. Работал как шарм. не понимаю, почему этот вопрос был проголосован. –

+0

@SiddharthSharma Вероятно, потому что многие неправильно поняли то, что вы просили в первую очередь. Если бы это _ «Я пытаюсь выбрать столбец с максимальным значением в первой строке, добавить его в новый фреймворк данных и т. Д.», Было там в основном теле, для многих было бы намного понятнее , –

+0

@Pj_ Хорошо. Я постараюсь улучшить мои будущие вопросы. Спасибо за совет. :) –

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