gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:33:30 26 4
gpt4 key购买 nike

我(R 的新手)正在分析一项关于两种治疗对基因表达的影响的随机研究。我们在基线和 1 年后评估了 5 个不同的基因。基因折叠的计算方法是 1 年的值除以基线值。

示例基因:IL10_BLIL10_1YIL10_fold

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

我想做以下情节:- Y 轴应显示具有 95% 置信限度的平均基因表达- X 轴应该是分类的,具有基线、1 年和 5 个基因中每个基因的倍数,按治疗分组。因此,两组中每个基因具有 3 个值的 5 个基因将意味着 X 轴上的 30 个类别。如果同一基因的点用一条线连接起来,那就太好了。

我自己尝试过这样做(使用 ggplot2)但没有成功。我试图直接从原始数据中获取数据,看起来像这样(前 6 个观察结果和 2 个不同的基因):

    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;")

如果有任何帮助(或指向类似主题的链接),我将不胜感激。

最佳答案

首先,您需要将数据融为长格式,以便一列(您的 X 列)包含一个分类变量,指示观察值是否为 BL1Y,或折叠

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

library(reshape2)
genes.long = melt(genes, id.vars='treatment', value.name='expression')

然后您需要不同列中的基因和测量值(基线、1 年、倍数)(来自 this question)。

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))

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

genes.long$measurement = factor(genes.long$measurement, levels=c('BL', '1Y', 'fold'))

然后您可以使用 stat_summary() 调用均值和置信区间进行绘图。使用分面来分隔组(治疗和基因组合)。

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)

genes

如果您希望顶层是基因而不是治疗,您可以将顺序反转为 facet_grid(.~gene+treatment)

关于r - 在随机实验中用均值绘制基因表达数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25220221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com