【问题标题】:Replacing column names in one data frame with rows from another data frame if adjacent row matches如果相邻行匹配,则将一个数据框中的列名替换为另一个数据框中的行
【发布时间】:2017-11-28 07:13:13
【问题描述】:

如果该数据帧中的相邻行匹配,我正在尝试用另一个数据帧中的值替换该数据帧的列名。

head(df1)

ensembl_gene_id     mgi_symbol
ENSMUSG00000021252  0610007P14Rik
ENSMUSG00000007777  0610009B22Rik
ENSMUSG00000086714  0610009E02Rik
ENSMUSG00000024442  0610009O20Rik
ENSMUSG00000042208  0610010F05Rik
ENSMUSG00000058706  0610030E20Rik

head(df2)

0610007N19Rik   0610007P14Rik   0610009B22Rik   0610009D07Rik   0610009E02Rik   0610009O20Rik   0610010F05Rik   0610011F06Rik   0610030E20Rik   0610031J06Rik   ⋯   mt-Tl1  mt-Tm   mt-Tp   mt-Tq   mt-Ts2  mt-Tv   3110079O15Rik   4933408B17Rik   Efcab9  Il17rd
GTCATCTTTACT.AJP1   -0.07497236 -0.1947123  -0.1656026  -0.252564   -0.08834634 5.2688983   -0.09093407 -0.1779879  -0.15511    1.6949233   ⋯   -0.02246199 -0.04942127 -0.09752107 -0.03143053 -0.03057371 -0.05273995 -0.02246199 -0.03175767 -0.02246199 -0.0824498
CCGACGTATCGT.AJP1   -0.07497236 -0.1947123  -0.1656026  -0.252564   -0.08834634 -0.1534577  -0.09093407 2.9506885   -0.15511    -0.2636754  ⋯   -0.02246199 -0.04942127 -0.09752107 -0.03143053 -0.03057371 -0.05273995 -0.02246199 -0.03175767 -0.02246199 -0.0824498
TTGGTACTTCCG.AJP1   -0.07497236 -0.1947123  -0.1656026  -0.252564   -0.08834634 -0.1534577  -0.09093407 -0.1779879  -0.15511    -0.2636754  ⋯   -0.02246199 -0.04942127 -0.09752107 -0.03143053 -0.03057371 -0.05273995 -0.02246199 -0.03175767 -0.02246199 -0.0824498
AAGAGCGCGTGC.AJP1   -0.07497236 -0.1947123  -0.1656026  -0.252564   -0.08834634 -0.1534577  -0.09093407 -0.1779879  -0.15511    -0.2636754  ⋯   -0.02246199 -0.04942127 -0.09752107 -0.03143053 -0.03057371 -0.05273995 -0.02246199 -0.03175767 -0.02246199 -0.0824498
GCTATCTTCCTN.AJP1   -0.07497236 -0.1947123  -0.1656026  -0.252564   -0.08834634 -0.1534577  -0.09093407 -0.1779879  -0.15511    -0.2636754  ⋯   -0.02246199 -0.04942127 -0.09752107 -0.03143053 -0.03057371 -0.05273995 -0.02246199 -0.03175767 -0.02246199 -0.0824498

在上面提供的示例中,我想将 df2 中的列名替换为来自df1$ensembl_gene_id 的匹配值。

nrow(df1) 大于 ncol(df2) 并且存在不匹配的值,所以我不能简单地将 colnames(df1) 替换为 df1$ensembl_gene_id

这可能是一个相对简单的数据整理问题,但我似乎无法弄清楚。任何帮助将不胜感激。

【问题讨论】:

  • 欢迎来到 SO!请不要粘贴每个数据帧的标头,而是包含 dput(df1)dput(df2) 的输出以使其可重现。
  • 感谢您告诉我。我很难为这篇文章格式化我的数据框,所以这很有帮助。

标签: r bioinformatics biomart


【解决方案1】:

希望这段代码可以帮助到你:

ind <- match(names(df2), df1$mgi_symbol)
names(df2) <- df1$ensembl_gene_id[ind]

【讨论】:

  • 这似乎只需稍作修改即可工作:ind &lt;- match(colnames(df2), df1$mgi_symbol)colnames(df2) &lt;- df1$ensembl_gene_id[ind]
  • 我认为如果你有一个数据框,“names()”和“colnames()”函数都会返回相同的答案
猜你喜欢
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多