Уровни фактора записи с использованием dplyr или tidyverse - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть таблица, в которой представлены 3 уровня аллелей риска в разных геномных локусах.В конечном счете, мне нужно установить в этой таблице ключ, чтобы определить распространенность различных аллелей с учетом статуса риска в большом количестве образцов.В настоящее время у меня есть пример таблицы рисков ниже:

genomic.stuff <- data.frame(c("A A", "A G", "G A", "G G"), c("T T", "C T", "T C", "C C"),
                        row.names= c("Risk Level 1", "Risk Level 2", "Risk Level 3", "Risk Level 4"),
                        stringsAsFactors = TRUE)
colnames(genomic.stuff) <- c("Gene A", "Gene B")

genomic.stuff
             Gene A Gene B
Risk Level 1    A A    T T
Risk Level 2    A G    C T
Risk Level 3    G A    T C
Risk Level 4    G G    C C

str(genomic.stuff)
'data.frame':   4 obs. of  2 variables:
 $ Gene A: Factor w/ 4 levels "A A","A G","G A",..: 1 2 3 4
 $ Gene B: Factor w/ 4 levels "C C","C T","T C",..: 4 2 3 1

Итак, у меня есть 2 вещи, которые я хотел бы сделать с этим фреймом данных.Имейте в виду, у меня есть большой файл сопоставления со многими генами, так что, если это можно сделать по всей таблице в dplyr или tidyverse, это было бы (я думаю?) Лучше всего.

1) Я хочу изменить уровни факторов, чтобы они ранжировались в соответствии со статусом риска, а не автоматически выравнивались в алфавитном порядке (кадр данных уже существует, поэтому я не думаю, что смогу сделать это науровень построения фрейма данных)

2) Я хочу переназначить уровень фактора так, чтобы уровень риска 1 = 1, уровень риска 2 |3 = 2, уровень риска 4 = 3.

Большое спасибо всем за помощь!

1 Ответ

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

Вам нужно будет сделать Risk Level numeric и выполнить переупорядочение следующим образом:

РЕДАКТИРОВАТЬ : Вы можете переклассифицировать уровень риска.

 library(tidyverse)
genomic.stuff <- data.frame(c("A A", "A G", "G A", "G G"), c("T T", "C T", "T C", "C C"),
                            row.names= c("Risk Level 1", "Risk Level 2", "Risk Level 3", "Risk Level 4"),
                            stringsAsFactors = TRUE)
colnames(genomic.stuff) <- c("Gene A", "Gene B")

    new_genome<-genomic.stuff %>% 
      mutate(RiskLevel=as.factor(c(1,2,3,4))) %>% 
      mutate(RiskLevel=as.numeric(c(1,2,2,4)),`Gene A`=fct_reorder(`Gene A`,RiskLevel),
             `Gene B`=fct_reorder(`Gene B`,RiskLevel)) 
    levels(new_genome$RiskLevel)
    levels(as.factor(new_genome$RiskLevel))
...