【发布时间】:2016-07-19 04:43:43
【问题描述】:
我有一个这样的数据框:
Entry name Gene names
A1BG_HUMAN A1BG
M0R009_HUMAN A1BG
F8W9F8_HUMAN A1CF
Q5T0W7_HUMAN A1CF
A1CF_HUMAN A1CF ACF ASP
H0YFH1_HUMAN A2M
A2MG_HUMAN A2M CPAMD5 FWP007
第一列是蛋白质名称,第二列是相关基因。在一些蛋白质前面可以看到多个基因名称,基本上是该细胞中第一个基因的别名(用1个空格分隔)。
我想把这个数据集转换成每个蛋白质名称都与不同基因名称配对的形式,所以我有这样的东西:
Entry name Gene names
A1BG_HUMAN A1BG
M0R009_HUMAN A1BG
F8W9F8_HUMAN A1CF
F8W9F8_HUMAN ACF
F8W9F8_HUMAN ASP
Q5T0W7_HUMAN A1CF
Q5T0W7_HUMAN ACF
Q5T0W7_HUMAN ASP
A1CF_HUMAN A1CF
A1CF_HUMAN ACF
A1CF_HUMAN ASP
H0YFH1_HUMAN A2M
H0YFH1_HUMAN CPAMD5
H0YFH1_HUMAN FWP007
A2MG_HUMAN A2M
A2MG_HUMAN CPAMD5
A2MG_HUMAN FWP007
我知道如何将具有多个条目的单元格拆分为不同的行,但我不确定如何将第一列中的蛋白质与基因的不同别名配对。
有人知道怎么做吗?
编辑:我不想只将数据拆分为不同的行。所以 cSplit 实际上不会在这里帮助我。我举个例子:
在A1CF_HUMAN前面,带来了A1CF基因的不同别名(ACF & ASP)。我不仅想将 A1CF_HUMAN 与 ACF 和 ASP 配对,而且还将与 A1CF 基因(F8W9F8_HUMAN 和 Q5T0W7_HUMAN)相关的其他蛋白质与 ACF 和 ASP 配对。请看一下上面我想要的内容,以更好地了解我到底在寻找什么。我不认为它可以通过一个命令来完成。
【问题讨论】:
-
I want to convert this data set to a form which every protein name is paired with different gene names, so that I have sth like this:sth like是您预期的确切输出还是您只是包含了一些组合? -
@Ali 你能发布你的数据吗?
-
@akrun 我没有直接回复你。我的帖子被标记了,我想说明我不是在寻找
cSplit的作用。我也回复了马丁的帖子。是的,这正是我想要的,只是行的顺序并不重要。马丁的回答很有效,非常感谢您的帮助。 -
@Learner 我的数据有大约 70,000 行。以上部分的
dput为:structure(list(Entry.name = structure(c(1L, 8L, 6L, 9L, 2L, 7L, 4L, 5L, 3L), .Label = c("A1BG_HUMAN", "A1CF_HUMAN", "A2MG_HUMAN", "F5H1E8_HUMAN", "F8W7L3_HUMAN", "F8W9F8_HUMAN", "H0YFH1_HUMAN", "M0R009_HUMAN", "Q5T0W7_HUMAN"), class = "factor"), Gene.names = structure(c(1L, 1L, 2L, 2L, 3L, 4L, 4L, 4L, 5L), .Label = c("A1BG", "A1CF", "A1CF ACF ASP", "A2M", "A2M CPAMD5 FWP007"), class = "factor")), .Names = c("Entry.name", "Gene.names"), class = "data.frame", row.names = c(NA, -9L))
标签: r split row bioinformatics