我有一个dataframe,它的维度是2377426行,2列,看起来像这样:
Name Seq
428293 ENSE00001892940:ENSE00001929862 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
431857 ENSE00001892940:ENSE00001883352 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGAAGTAAATGAGCTGATGGAAGAGC
432253 ENSE00001892940:ENSE00003623668 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGAAGTAAATGAGCTGATGGAAGAGC
436213 ENSE00001892940:ENSE00003534967 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGAAGTAAATGAGCTGATGGAAGAGC
429778 ENSE00001892940:ENSE00002409454 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAGCTGGGAACCTTTGCTCAAAGCTCC
431263 ENSE00001892940:ENSE00001834214 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAGCTGGGAACCTTTGCTCAAAGCTCC
第一列(Name)中的所有值都是唯一的,但在“Seq”列中有许多重复的值。我想要一个只包含唯一序列和名称的data.frame。我已经尝试过unique,但这太慢了。我还尝试过对数据库进行排序,并使用以下代码:
dat_sorted = data[order(data$Seq),]
m = dat_sorted[1,]
x =1;for(i in 1:length(dat_sorted[,1])){if(dat_sorted[i,2]!=m[x,2]){x=x+1;m[x,]=dat_sorted[i,]}}
这也太慢了!有没有更快的方法在 Dataframe 的一列中找到唯一值?
4条答案
按热度按时间c90pui9n1#
应该可以。
uttx8gqw2#
应该是值得的,特别是如果你的数据对你的机器来说太大了。
nbewdwxp3#
最快的,你可以试试:
以下是直接从文档中获取的一些基准:
kit
也有funique
功能。txu3uszq4#
kit::fduplicated
似乎在具有许多唯一行(很少重复)的 Dataframe 中具有轻微的优势,而dplyr::distinct
似乎在具有许多重复行(很少唯一行)的 Dataframe 中更有效: