首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机实验中用均值绘制基因表达数据

随机实验中用均值绘制基因表达数据
EN

Stack Overflow用户
提问于 2014-08-09 15:40:42
回答 1查看 1.1K关注 0票数 3

我(一个新手,R)分析了两个处理对基因表达的影响的随机研究。在基线和1年后,我们评估了5个不同的基因。基因折叠计算为1年时的值除以基线值。

示例基因: IL10_BL IL10_1Y IL10_fold

基因表达是作为一个连续变量来测量的,通常在0.1到5.0之间。100名患者被随机分为他汀类药物或饮食疗法。

我想做的是:-Y轴应该以95%的置信限显示基因的平均表达-X轴应该是绝对的,以基线、1年和折叠值为5个基因,按治疗分组。因此,两组中每个基因有3个值的5个基因将意味着X轴上的30个类别。这将是非常好的点,因为相同的基因将连接到一条线。

我自己也试过这样做(使用ggplot2),但没有成功。我试图直接从粗糙的数据中做这件事,这些数据看起来如下(前6个观察和2个不同的基因):

代码语言:javascript
复制
    genes <- read.table(header=TRUE, sep=";", text = 
    "treatment;IL10_BL;IL10_1Y;IL10_fold;IL6_BL;IL6_1Y;IL6_fold;
    diet;1.1;1.5;1.4;1.4;1.4;1.1;
    statin;2.5;3.3;1.3;2.7;3.1;1.1;
    statin;3.2;4.0;1.3;1.5;1.6;1.1;
    diet;3.8;4.4;1.2;3.0;2.9;0.9;
    statin;1.1;3.1;2.8;1.0;1.0;1.0;
    diet;3.0;6.0;2.0;2.0;1.0;0.5;")

我将非常感谢任何帮助(或链接到类似的线程)来做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-09 19:17:54

首先,您需要将数据融化成一种长格式,以便一列(X列)包含一个分类变量,指示观察是BL1Y还是fold

(您的命令创建了一个空列,您可能首先需要删除它:genes$X = NULL)

代码语言:javascript
复制
library(reshape2)
genes.long = melt(genes, id.vars='treatment', value.name='expression')

然后你需要基因和测量(基线,1年,折叠)在不同的列(来自this question)。

代码语言:javascript
复制
genes.long$gene = as.character(lapply(strsplit(as.character(genes.long$variable), split='_'), '[', 1))
genes.long$measurement = as.character(lapply(strsplit(as.character(genes.long$variable), split='_'), '[', 2))

然后按照你期望的顺序进行测量:

代码语言:javascript
复制
genes.long$measurement = factor(genes.long$measurement, levels=c('BL', '1Y', 'fold'))

然后,您可以使用stat_summary()调用来绘制平均值和置信区间。使用小面分离各组(治疗和基因组合)。

代码语言:javascript
复制
ggplot(genes.long, aes(measurement, expression)) + 
stat_summary(fun.y = mean, geom='point') + 
stat_summary(fun.data = 'mean_cl_boot', geom='errorbar', width=.25) +
facet_grid(.~treatment+gene)

如果你想要顶级基因而不是治疗,你可以倒转顺序到facet_grid(.~gene+treatment)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25220221

复制
相关文章

相似问题

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