首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dplyr或tidyverse重新计算因子级别

使用dplyr或tidyverse重新计算因子级别
EN

Stack Overflow用户
提问于 2018-12-19 02:47:44
回答 1查看 1.3K关注 0票数 2

我有一个表格,在不同的基因组位点上有3个水平的危险等位基因。最终,我需要设置这个表--一个键来识别在大量样本中被危险状态所影响的不同等位基因的流行率。我目前有一个风险表的例子如下:

代码语言:javascript
复制
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

所以我想用这个数据框架做两件事。请记住,我有一个包含许多基因的大型映射文件,所以如果这可以在dplyr或tidyverse的整个表中完成,那么(我想呢?)做最好的。

1)我希望对这些因素进行重新分级,使它们按照风险状况排列,而不是按照字母顺序自动调整(数据框架已经存在,因此我认为我无法在数据框架构建的层次上这样做)。

2)重新分配因子水平,使风险等级1= 1,风险等级2= 2,风险等级4=3。

非常感谢你们的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-19 03:23:47

您需要按以下方式进行Risk Level numeric并进行重新排序:

编辑:您可以选择重新分级风险级别。

代码语言:javascript
复制
 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))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53843892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档