[英]Converting data.frame into a matrix for expression data
我是R的新手,但是我越来越危险。 我想根据药物治疗后监测的大约2000个基因制作大量的基因表达折线图。 通过csv加载后的数据框如下所示
:
head(tmp)
gene_symbol untreated X1hr.avg X3hr.avg X6hr.avg X24hr.avg
1 ERRFI1 0.16612478 -2.0758630 -2.5892085 -2.02039809 -2.4124696
2 ERRFI1 0.27750147 -2.3086333 -3.0538376 -4.01436186 -4.7491462
3 CTDSPL2 0.13172411 -0.7920983 -0.3580963 -0.76213664 -0.8171385
4 CTDSPL2 -0.05205203 -0.9551288 -0.2072265 -0.76993891 -1.0028680
5 SLC26A2 0.20268100 0.5188266 0.5429924 0.01970562 -1.1955852
6 SLC29A4 0.19658238 -0.8102461 -0.9019243 -1.50714838 -1.4648872
我想将此数据帧转换为如下所示:
gene_symbol ratio treatment
ERRFI1 0.16612478 untreated
ERRFI1 -2.0758630 X1hr.avg
ERRFI1 -2.5892085 X3hr.avg
ERRFI1 -2.02039809 X6hr.avg
ERRFI1 -2.4124696 X24hr.avg
等等...
这将允许我通过ggplot进行绘制:
ggplot(data=tmp, aes(x=factor(treatment), y=ratio, group=gene_symbol)) + geom_line() + geom_point()
您正在寻找的是reshape2库中的melt()函数。 我使用了您的变量名,但是我建议将融化的数据存储到另一个变量名中。
tmp <- as.data.frame(read.table(text="gene_symbol untreated X1hr.avg X3hr.avg X6hr.avg X24hr.avg
1 ERRFI1 0.16612478 -2.0758630 -2.5892085 -2.02039809 -2.4124696
2 ERRFI1 0.27750147 -2.3086333 -3.0538376 -4.01436186 -4.7491462
3 CTDSPL2 0.13172411 -0.7920983 -0.3580963 -0.76213664 -0.8171385
4 CTDSPL2 -0.05205203 -0.9551288 -0.2072265 -0.76993891 -1.0028680
5 SLC26A2 0.20268100 0.5188266 0.5429924 0.01970562 -1.1955852
6 SLC29A4 0.19658238 -0.8102461 -0.9019243 -1.50714838 -1.4648872", header=TRUE))
library(reshape2)
tmp <- melt(data=tmp, id.vars=c("gene_symbol"))
names(tmp) <- sub("variable", "treatment", names(tmp))
names(tmp) <- sub("value", "ratio", names(tmp))
ggplot(data=tmp, aes(x=factor(treatment), y=ratio, group=gene_symbol)) + geom_line(aes(colour=gene_symbol)) + geom_point()
虽然不确定这是否是呈现此类数据的有用方法。 您可能需要重新考虑您的目标是什么。
您实际上所做的是“堆叠”变量,因此您也可以使用... stack
函数。
out <- data.frame(tmp[1], stack(tmp[-1]))
您会收到警告,但这只是警告,而不是错误。 它只是告诉您输出具有新的行名。
这是生成的“堆叠” data.frame
前几行和最后几行:
> head(out)
gene_symbol values ind
1 ERRFI1 0.16612478 untreated
2 ERRFI1 0.27750147 untreated
3 CTDSPL2 0.13172411 untreated
4 CTDSPL2 -0.05205203 untreated
5 SLC26A2 0.20268100 untreated
6 SLC29A4 0.19658238 untreated
> tail(out)
gene_symbol values ind
25 ERRFI1 -2.4124696 X24hr.avg
26 ERRFI1 -4.7491462 X24hr.avg
27 CTDSPL2 -0.8171385 X24hr.avg
28 CTDSPL2 -1.0028680 X24hr.avg
29 SLC26A2 -1.1955852 X24hr.avg
30 SLC29A4 -1.4648872 X24hr.avg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.