r dataframe için her grup içinde sıralaması alın

oy
0

Ben R bir dataframe sahip datsütunları içeren Gene, Expressionve SampleID. Benim yaptığım tür dato göre gruplandırılmış oluyor böyle Geneazalan tarafından ve düzenlenmiş Expressionaşağıdaki kullanarak her gen için:

dat_sorted <- dat %>% select(Gene, Expression, SampleID) %>%
    group_by(Gene) %>% 
    arrange(Gene, desc(Expression))

Şimdi ne yapmak isteyen bir eklemektir Ranksütun dat_sortedher biri içinde bir rütbe de geçerli olacak Genedayalı grubun Expressiono ifade yüksek mi eğer belirli bir gen için, belirli bir numune daha yüksek bir dereceye sahip olacak böyle bu değerle,.

İşte sonuç nasıl görünmesi gerektiğine dair bir örnek:

Gene                Expression      Sample      Rank
ENSG00000000003     2.81561500      HSB671      1
ENSG00000000003     2.79336700      HSB431      2
ENSG00000000003     2.40009100      HSB618      3
ENSG00000000938     1.75148448      HSB671      1
ENSG00000000938     1.52182467      HSB670      2
ENSG00000000938     0.83478860      HSB414      3
ENSG00000000938     0.62174432      HSB459      4
Oluştur 27/11/2018 saat 18:19
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
0

insanlar Sorunuzun unuttu galiba. Bu artık çok geç gelmiyor Umut ^^

library(dplyr)

df %>% group_by(Gene) %>% mutate(Rank = dense_rank(desc(Expression)))

> df
# A tibble: 7 x 4
# Groups:   Gene [2]
  Gene            Expression Sample  Rank
  <chr>                <dbl> <chr>  <dbl>
1 ENSG00000000003      2.82  HSB671     1
2 ENSG00000000003      2.79  HSB431     2
3 ENSG00000000003      2.40  HSB618     3
4 ENSG00000000938      1.75  HSB671     1
5 ENSG00000000938      1.52  HSB670     2
6 ENSG00000000938      0.835 HSB414     3
7 ENSG00000000938      0.622 HSB459     4

Ya da baz R:

df$Rank <- ave(-df$Expression, df$Gene, FUN = rank)

Cevap 18/04/2019 saat 14:20
kaynak kullanıcı

oy
0

Ben dataframe zaten azalan düzende sıralanır beri, bir satır numarası sütun gerek sanırım. Yani, en yüksek Sıra üstünde olmak ve altta düşük olacaktır. Bu durumda, sadece Rank bir sıra numarası, sütun ekleyin. Aşağıdaki gibi:

   dat_sorted$Rank <- seq.int(nrow(dat_sorted)) 
Cevap 27/11/2018 saat 18:31
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more