Как связать в определенном порядке в r - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть следующие отдельные кадры данных: eGenes, all_genes, general, nsPost, nsPre, post и pre.Каждый из этих фреймов данных имеет столбец Category, равный имени фрейма данных, поэтому, когда я объединяю их все вместе, я знаю, что к чему, например:

eGenes:

Gene            pLI             Gene_Symbol     Category
ENSG00000000938 1.771744e-01    FGR             eGenes
ENSG00000000971 9.996310e-01    CFH             eGenes
ENSG00000001036 3.655835e-04    FUCA2           eGenes

Я хочу объединить их в один фрейм данных в определенном порядке, чтобы столбец Category развивался в следующем порядке: eGenes, all_genes, general, pre, post, nsPre, nsPost (для последующего построения графика).

Но когда я делаю all_lists <- rbind(eGenes, all_genes, general, pre, post, nsPre, nsPost) и затем строю график на основе Category, графики появляются в другом порядке, чем тот, который я выразил в rbind ().Как я могу контролировать заказ?Я даже попытался объединить один за другим, как показано ниже, но это все равно не работает:

all_lists_1 <- rbind(eGenes, all_genes, general)
all_lists_2 <- rbind(all_lists_1, pre)
all_lists_3 <- rbind(all_lists_2, post)
all_lists_4 <- rbind(all_lists_3, nsPre)
all_lists <- rbind(all_lists_4, nsPost)

код печати:

p <- ggplot(all_lists, aes(x=Category, y=pLI, fill=Category)) + geom_violin() + theme(axis.text.x = element_text(angle=90, hjust=1))

ОБНОВЛЕНИЕ:

unique(all_lists$Category):

[1] All eGenes               All Genes                General                  Prenatal                 Postnatal                Prenatal (Non-specific)  Postnatal (Non-specific)
Levels: All eGenes All Genes General Postnatal Postnatal (Non-specific) Prenatal Prenatal (Non-specific)

summary(all_lists):

              Gene            pLI         Gene_Symbol                        Category    
 ENSG00000063978:    6   Min.   :0.000   U1     :   11   All eGenes              : 8206  
 ENSG00000100012:    6   1st Qu.:0.000   Y_RNA  :    7   All Genes               :23790  
 ENSG00000204147:    6   Median :0.025   ASAH2B :    6   General                 : 2887  
 ENSG00000266338:    6   Mean   :0.311   CCDC7  :    6   Postnatal               : 1148  
 ENSG00000000938:    3   3rd Qu.:0.723   HERC2P2:    6   Postnatal (Non-specific):  479  
 ENSG00000000971:    3   Max.   :1.000   MALAT1 :    6   Prenatal                : 1653  
 (Other)        :40172   NA's   :14826   (Other):40160   Prenatal (Non-specific) : 2039 

1 Ответ

0 голосов
/ 01 декабря 2018

Вам необходимо изменить порядок уровней Category, указав порядок уровней, в противном случае ggplot будет отображаться в алфавитном порядке.

  all_lists$Category <- factor(all_lists$Category, levels = c("eGenes", "all_genes", "general", "pre", "post", "nsPre", "nsPost"))

Пример кода с mtcars набором данных

library(ggplot2)
mtcars$cyl <- factor(mtcars$cyl) # change cyl as factor
mtcars$cyl
 [1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4
 Levels: 6 8 4
mtcars$cyl <- factor(mtcars$cyl, levels = c("6", "8", "4")) # change the order of cyl categories
ggplot(mtcars, aes(x=cyl, y=mpg)) + # plot
  geom_violin()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...