查找行的出现次数

时间:2011-05-07 00:31:55

标签: r

在R中,我想以最快的方式找到数据帧唯一行的出现次数。

我有超过200万行,但数据适合我的16GB内存机器 table和ftable很快但是唯一组合的数量超过了它们可以处理的数量,所以我收到一条错误消息。

感谢

史蒂夫

4 个答案:

答案 0 :(得分:3)

使用count包中的plyr。它避免了数据中没有出现的组合(与表格等相反)。

答案 1 :(得分:1)

如果问题是获得唯一线的数量:

sum(!duplicated(dfrm))

如果问题是要获得独特的线条:

dfrm[!duplicated(dfrm), ]

如果您想要一个独特组合的表,那么请考虑使用内置数据帧汽车的示例:

cars2 <- cars[sample(1:10, 20, replace=TRUE), ]  # to make some dups
table(apply(cars2,1,paste, sep=".", collapse="."))

# output #
10.18 10.26 10.34 11.17  4.10   4.2  7.22   7.4  8.16 
    2     3     3     3     3     1     1     2     2 

答案 2 :(得分:1)

这个问题可以使用SQL解决(这里我使用sqldf包)。来自@DWin的样本数据回答。

#Occurences of rows
sqldf("SELECT speed, dist, COUNT(*) AS N FROM cars2 GROUP BY speed, dist")
#Some statistics of occurences ;)
sqldf("SELECT N,COUNT(N) AS Freq from 
           (SELECT COUNT(*) AS N FROM cars2 GROUP BY speed,dist) 
       GROUP BY N")

答案 3 :(得分:0)

countNbOccurrences = function(leX, leGroData){
    return(sum(leX == leGroData))
}

sapply( theRow, countNbOccurrences, leGroData = fullListOfRows)