Алфавитный порядок не работает должным образом после добавления нового фактора в кадре данных для замены другого - PullRequest
0 голосов
/ 18 мая 2019

У меня есть датафрейм ниже:

AS<-c("Composite", "DGIdb", "DrugBank", "DrugCentral_Human",
      "Repurposing", "LINCS_Data_Portal","TargetCentral")
ASe<-c("Composite", "DGIdb", "DrugBank", "DrugCentral (Human)",
       "Drug Repurposing Hub", "LINCS Data Portal","TargetCentral")
d<-data.frame(AS,ASe)

и я заменяю "Повторное использование" столбца AS на "Центр повторного использования лекарств" на:

levels(d$AS) <- c(levels(d$AS),"Drug Repurposing Hub") 
d$AS[d$AS=="Repurposing"] <- "Drug Repurposing Hub"

Но когда я пытаюсь упорядочить фрейм данных в алфавитном порядке на основе столбца AS

d<-data.frame(d[order(d$AS),])

Я получаю:

                    AS                  ASe
1            Composite            Composite
2                DGIdb                DGIdb
3             DrugBank             DrugBank
4    DrugCentral_Human  DrugCentral (Human)
6    LINCS_Data_Portal    LINCS Data Portal
7        TargetCentral        TargetCentral
5 Drug Repurposing Hub Drug Repurposing Hub

в то время как «Центр реагирования на наркотики» должен был находиться в 5-м ряду.

1 Ответ

1 голос
/ 18 мая 2019

Для уровней: мне кажется, здесь все в порядке. Но, если вы не можете объяснить это, я предлагаю использовать пакет forcats

library(forcats)
library(dplyr)
AS<-c("Composite", "DGIdb", "DrugBank", "DrugCentral_Human",
      "Repurposing", "LINCS_Data_Portal","TargetCentral")
ASe<-c("Composite", "DGIdb", "DrugBank", "DrugCentral (Human)",
       "Drug Repurposing Hub", "LINCS Data Portal","TargetCentral")
d<-data.frame(AS,ASe)
levels(d$AS) <- c(levels(d$AS),"Drug Repurposing Hub") 
d$AS[d$AS=="Repurposing"] <- "Drug Repurposing Hub"
d
> d
                    AS                  ASe
1            Composite            Composite
2                DGIdb                DGIdb
3             DrugBank             DrugBank
4    DrugCentral_Human  DrugCentral (Human)
5 Drug Repurposing Hub Drug Repurposing Hub
6    LINCS_Data_Portal    LINCS Data Portal
7        TargetCentral        TargetCentral
df <- d %>% 
  dplyr::mutate(AS = forcats::fct_relevel(AS, sort),
                ASe = forcats::fct_relevel(ASe, sort))
df
> df
                    AS                  ASe
1            Composite            Composite
2                DGIdb                DGIdb
3             DrugBank             DrugBank
4    DrugCentral_Human  DrugCentral (Human)
5 Drug Repurposing Hub Drug Repurposing Hub
6    LINCS_Data_Portal    LINCS Data Portal
7        TargetCentral        TargetCentral

Также организовать.

dfx <- d %>% 
  dplyr::mutate(AS = forcats::fct_relevel(AS, sort),
                ASe = forcats::fct_relevel(ASe, sort)) %>% 
  dplyr::arrange(AS, ASe) #
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...