我正在对RNA-Seq数据进行差异表达分析。我已经生成了一个计数表,并希望根据我的“样本”数据框中的数据更改列名,以使其更易于阅读。
这是我生成的“计数”数据框的一部分:
X140624_I266.4MKD.L1.201 X140624_I266.4MKD.L1.202
gene1 0 0
gene2 97 74
这是我的“示例”数据框的一部分:
title id
140718_I266_FCC4RDRACXX_L1_RHUMdztTAAKSRAAPEI-215 GSM2475317
140718_I266_FCC4RDRACXX_L8_RHUMdztTAALIRAAPEI-207 GSM2475318
我的计数表的列名是“样本”中“标题”列的简化版本。如何将计数表中的列名替换为“samples”中的“id”名称?
所以,我的计数表应该是这样的:
GSM.... GSM....
gene1 0 0
gene2 97 74
要替换数据框的名称,您可以使用函数
colnames()
如果您的数据帧顺序相同,就像
colnames(counts) <- samples$id
一样简单
但是如果问题是你在两个数据框中有不同的顺序,你有两个选择:
sub
counts <-
data.frame(
X140624_I266.4MKD.L1.201 = c(0, 97),
X140624_I266.4MKD.L1.207 = c(0, 60),
X140624_I266.4MKD.L1.202 = c(0, 74),
X140624_I266.4MKD.L1.215 = c(0, 23)
)
rownames(counts) <- c("gene1", "gene2")
sample <-
data.frame(
title = c(
"140718_I266_FCC4RDRACXX_L1_RHUMdztTAAKSRAAPEI-215",
"140718_I266_FCC4RDRACXX_L8_RHUMdztTAALIRAAPEI-207",
"140718_I266_FCC4RDRACXX_L1_RHUMdztTAAKSRAAPEI-202",
"140718_I266_FCC4RDRACXX_L8_RHUMdztTAALIRAAPEI-201"
),
id = c("GSM2475317", "GSM2475318", "GSM2475319", "GSM2475320")
)
#Extract the last number in each column in counts
index_count <- sub(".*\\.", "", colnames(counts))
#Extract the last number from each sample
index_sample <- sub(".*\\-", "", sample$title)
match(index_count, index_sample)
colnames(counts) <- sample[match(index_sample, index_count), "id"]
使用此代码,表格将是:
X140624_I266.4MKD.L1.201 | X140624_I266.4MKD.L1.207 | X140624_I266.4MKD.L1.202 | X140624_I266.4MKD.L1.215 | |
---|---|---|---|---|
基因1 | 0 | 0 | 0 | 0 |
基因2 | 97 | 60 | 74 | 23 |
*样本:
标题 | id |
---|---|
140718_I266_FCC4RDRACXX_L1_RHUMdztTAAKSRAAPEI-215 | GSM2475317 |
140718_I266_FCC4RDRACXX_L8_RHUMdztTAALIRAAPEI-207 | GSM2475318 |
140718_I266_FCC4RDRACXX_L1_RHUMdztTAAKSRAAPEI-202 | GSM2475319 |
140718_I266_FCC4RDRACXX_L8_RHUMdztTAALIRAAPEI-201 | GSM2475320 |
GSM2475320 | GSM2475318 | GSM2475319 | GSM2475317 | |
---|---|---|---|---|
基因1 | 0 | 0 | 0 | 0 |
基因2 | 97 | 60 | 74 | 23 |