问题描述
我有一个包含所有外显子和外显子所属基因的数据框。 当前的外显子名称并不表示它们的顺序。 我已经根据起始基因组位置对它们进行了排序, 所以现在我只需要生成一个列,根据基因给他们一个订单号。
数据框顶部的示例:
基因外显子
GENE1,"789",
GENE1,"953","102",
GENE2,"43024",
GENE3,"542","047",
所以这就是我希望我的数据框的样子:
GENE EXON 基因组顺序
GENE1,1
GENE1,2
GENE1,3
基因 2,1
GENE3,2
解决方法
您可以使用 ave
transform(df,Order = ave(1:nrow(df),GENE,FUN = seq_along))
,
在data.table
library(data.table)
setDT(df)[,Order := rowid(GENE)]