我已经得到了一个数据(超过9000行),它保存了每个细胞集群(列)特定基因(行)的平均基因表达,现在我需要将基因名(行名)更改为同义词。看起来是这样的:
Cluster1 Cluster2 Cluster3
[Tppp2] 10.32 0.14 2.56
[Mtx1] 6.32 8.77 0.30
[Vps37c] 225.02 132.87 9.52
[Slc39a9] 52.13 18.42 4.12我还有另一个数据(超过13000行),它保存着原语;基因名,正如所说的(旧的)--正方根基因名(新的)。看起来是这样的:
GeneName NewGeneName
[1] Vps37c VPS37C
[2] Tppp2 TPPP3
[3] Slc39a9 SLC39A9
[4] Mtx1 MTX1B因此,对于第一个dataframe中的每个行,行名将与dataframe2$GeneName中的名称相匹配,然后dataframe2$NewGeneName中的名称将保存为新行名(或保存所有新行名的向量)。例如,Tppp2将是TPPP3,以此类推,结果如下:
rownames(expr_df) <- c("TPPP3", "MTX1B", "VPS37C", "SLC39A9"。
我已经尝试了很多事情,但我真的很苦恼,我无法使它发挥作用。我不记得我试过和失败过的所有方式,抱歉。
FYI:表达式dataframe的同义词和行名不具有相同的顺序,而正方根dataframe所包含的基因比表达dataframe中的基因多。
发布于 2020-06-04 09:34:30
tidyverse解决方案:
df1 %>%
rownames_to_column() %>%
left_join(df2, by = c("rowname" = "GeneName"))
rowname Cluster1 Cluster2 Cluster3 NewGeneName
1 Tppp2 10.32 0.14 2.56 TPPP3
2 Mtx1 6.32 8.77 0.30 MTX1B
3 Vps37c 225.02 132.87 9.52 VPS37C
4 Slc39a9 52.13 18.42 4.12 SLC39A9数据
df1 <- tibble::tribble(
~Cluster1, ~Cluster2, ~Cluster3,
10.32, 0.14, 2.56,
6.32, 8.77, 0.3,
225.02, 132.87, 9.52,
52.13, 18.42, 4.12
)
df1 <- as.data.frame(df1)
rownames(df1) <- c("Tppp2", "Mtx1", "Vps37c", "Slc39a9")
df2 <- tibble::tribble(
~GeneName, ~NewGeneName,
"Vps37c", "VPS37C",
"Tppp2", "TPPP3",
"Slc39a9", "SLC39A9",
"Mtx1", "MTX1B"
)https://stackoverflow.com/questions/62191059
复制相似问题