【发布时间】:2022-01-23 00:11:08
【问题描述】:
我的数据框看起来像这样
path:hsa00010 cpd:C00022
path:hsa00010 cpd:C00024
path:hsa00010 cpd:C00031
path:hsa00010 cpd:C00033
path:hsa00010 cpd:C00036
path:hsa00010 cpd:C00068
path:hsa00010 cpd:C00074
path:hsa00010 cpd:C00084
path:hsa00010 cpd:C00103
path:hsa00010 cpd:C00111
path:hsa00020 cpd:C00022
path:hsa00020 cpd:C00024
path:hsa00020 cpd:C00031
path:hsa00020 cpd:C00033
path:hsa00020 cpd:C00036
path:hsa00020 cpd:C00068
path:hsa00020 cpd:C00074
path:hsa00020 cpd:C00084
path:hsa00020 cpd:C00103
path:hsa00020 cpd:C00111
我想使用第二列作为行名并获得这样的数据框
cpd:C00022 path:hsa00010 path:hsa00020
cpd:C00024 path:hsa00010 path:hsa00020
...
有人可以提供任何想法吗?谢谢!
【问题讨论】:
-
你试过
rownames(mydata) <- mydata[,2]吗?如果这不起作用,请提供一个可重现的示例(实际代码和数据) -
我现在才看到您要分配重复的行名(例如“cpd:C00022”)。这在 R data.frames 中是不可能的。如果您想对“cpd:C00022”和“cpd:00024”的数据进行子集化,您可以尝试
mydata[mydata[,2] %in% c("cpd:C00022", "cpd:C00024"),],或使用例如mydata[grep("C0002\d", mydata[,2]),]. -
@scrameri 谢谢。我现在可以有子集。但是如何将其从列转换为行?
-
如果您开始使用
dplyr动词,其中许多会忽略或有意删除行名。虽然基本 R 函数倾向于处理行名称(而不是故意删除它们),但它们也可以在不真正通知您的情况下更改它们,通常以确保它们是唯一的前提(例如,添加 @ 987654328@ 或类似名称以唯一化名称)。因此,通常建议将基于行的索引/***索引***作为列,而不是作为行名,因此 (1) 函数不会默默地更改它们,并且 (2) 您可以有任意数量的“索引”(列)。 -
@RRRRRRRR 很难理解你到底想要转换什么。请使用真实的代码和数据(不是复制粘贴的数据)制作一个最小的可重现示例。 3-4 行数据应该足以向我们展示您想在更大的 data.frame 上做什么,以及您尝试过哪些没有奏效。见stackoverflow.com/questions/5963269/…
标签: r