如何使用来自不同数据框的数据重命名列

问题描述 投票:0回答:1

我正在对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
r multiple-columns rename
1个回答
0
投票

要替换数据框的名称,您可以使用函数

colnames()

如果您的数据帧顺序相同,就像

colnames(counts) <- samples$id

一样简单

但是如果问题是你在两个数据框中有不同的顺序,你有两个选择:

  1. 对样本中的行进行排序以获得与列名在计数中相同的顺序,然后应用我之前放置的函数
  2. 获取样本中关于列的行的顺序。我现在将粘贴一些代码来解释这个,问题是我不确定名称的简化是如何完成的,所以我只是假设公共部分是每个名称末尾的数字,如果它不同的话你将不得不从
    sub
  3. 更改正则表达式

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
  • colname 更改后的计数:
GSM2475320 GSM2475318 GSM2475319 GSM2475317
基因1 0 0 0 0
基因2 97 60 74 23
© www.soinside.com 2019 - 2024. All rights reserved.