2016-03-22 22 views
1

Soru basittir. Dplyr kullanmaya başladım, ancak her satırdaki değerleri nasıl sıralayacağımı çözemiyorum. Nihai hedef, her bir değere ve her bir satıra bir sıralama atamak olacaktır.Dplyr kullanarak bir veri çerçevesindeki değerler nasıl sıralanır?

mat_agg %>% rowwise() %>% mutate_each(funs(rank)) 

bir örnek:

matrix(c(1,0,0.5,0.5, 0, 1),nrow=2) 

istenen sonucu olacaktır:

matrix(c(1,3,2,2, 3, 1),nrow=2) 

ben çok herhangi bir yardım takdir ben işe yaramadı aşağıdaki çalıştı. Teşekkür ederim!

+3

ile do kullanın. "Yapmam" – akrun

+1

ile çalışmayı düşünürdüm 'düzenlemek'? İşte [nasıl tekrarlanabilir bir örnek oluşturabilirim?] (Http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5965451#5965451). –

+1

Sadece bir veri çerçevesinden ziyade matris ile çalışıyorsanız, muhtemelen dplyr kullanmak istemezsiniz (gerçek örneğiniz daha karmaşıksa). –

cevap

2

apply(), rank() ile birlikte kullanılabilir. Aşağı inen siparişi almak için m'u reddediyoruz ve istenen yapıyı elde etmek için çıkışı transpoze ediyoruz. Biz dplyr kullanıyorsanız

t(apply(-m,1,rank)) 
#  [,1] [,2] [,3] 
#[1,] 1 2 3 
#[2,] 3 2 1 
1

, matrixdata.frame dönüştürmek ve kodunuzu test etmek başkaları için küçük bir tekrarlanabilir bir örnek ve beklenen çıkışı göstermek Lütfen rowwise

library(dplyr) 
data.frame(m1) %>% 
     rowwise() %>% 
     do(data.frame(t(rank(-unlist(.))))) 
#  X1 X2 X3 
# (dbl) (dbl) (dbl) 
#1  1  2  3 
#2  3  2  1 
İlgili konular