2014-02-17 6 views
0

Я хотел бы заказать все строки на основе двух значений столбцов в R. Это мой вклад:номера заказа по две колонки

chr start no 

4  85  non1 
4  23  non2 
6  10  non2 
8  25  non2 
22 56  non4 
2  15  non1 

Это мой ожидаемый результат:

chr start no 
2  15  non1 
4  23  non2 
4  85  non1 
6  10  non2 
8  25  non2 
22 56  non4 

Спасибо , Приветствия.

+2

если ваши данные находятся в фрейме данных, попробуйте http://stackoverflow.com/questions/6769703/order-data-frame-by-two-columns-in-r – user2510479

ответ

1

order функция принимает переменное число входных векторов, заказ на первый, затем второй и так далее ...

BED=read.table(text= 
"chr start no 
4  85  non1 
4  23  non2 
6  10  non2 
8  25  non2 
22 56  non4 
2  15  non1", header=T) 

BED[order(BED$chr, BED$start),] 
    chr start no 
6 2 15 non1 
2 4 23 non2 
1 4 85 non1 
3 6 10 non2 
4 8 25 non2 
5 22 56 non4 
+0

Спасибо! Но в моих данных у меня есть chr = 10 и chr = 1, а эти функции - порядки 1 и после 10. (правый порядок должен быть 1 и 2 и 3 ...) – user3091668

+0

ах да общая проблема. Я полагаю, у вас есть хронология x и y, поэтому столбец является символом? Я думаю, что я обычно делаю это 'as.factor', затем' reorder (thefactor, therightorder) '. Я раздражаю, я знаю. –

1

Хотя можно, конечно, использовать order из базового пакета для работы с данными Я настоятельно рекомендую использовать пакет plyr.

chr <- c(4,4,6,8,22,2) 
start <- c(85, 23, 10, 25, 56, 15) 
no <- c("non1", "non2", "non2", "non2", "non4", "non1") 

myframe <- data.frame(chr, start, no) 

создает вашу структуру данных. С точки зрения борьбы с колонкой символов:

myframe$chr <- as.numeric(myframe$chr) 

, а затем получить скомпонованный версию очень просто:

library(plyr) 
arrangedFrame <- arrange(myframe, chr, start) 
print(arrangedFrame) 

    chr start no 
1 2 15 non1 
2 4 23 non2 
3 4 85 non1 
4 6 10 non2 
5 8 25 non2 
6 22 56 non4 

есть также много легко модифицированных вариантов с использованием arrange, которые делают различные переупорядочивания проще, чем используя order. И пока я еще не использовал его, я знаю, что Хэдли выпустил dplyr не так давно, который предлагает еще больше функциональности и который я бы рекомендовал вам проверить.

+0

Функция 'arr' работает также с отличным пакетом [dplyr] (http://cran.r-project.org/web/packages/dplyr/index.html). – user2030503

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