x <- c(1,1,1,2,3,3,4,4,4,5,6,6,6,6,6,7,7,8,8,8,8)
y <- c('A','A','C','A','B','B','A','C','C','B','A','A','C','C','B','A','C','A','A','A','B')
X <- data.frame(x,y)
上面我有一个数据框,我想在向量x中识别重复项,同时计算两个(x,y)的重复实例数.... 例如,我发现ddply和这篇帖子与我想要的相似(Find how many times duplicated rows repeat in R data frame)。
library(ddply)
ddply(X,.(x,y), nrow)
这计算实例的数量1 - A发生的次数是2次......但是我正在寻找R来返回向量x中的唯一标识符,其中x与列y中的匹配次数相同(去掉了如果需要,矢量y,如下所示..
x A B C
1 2 0 1
2 1 0 0
3 0 2 0
4 1 0 2
5 0 1 0
6 2 1 2
任何帮助将不胜感激,谢谢
答案 0 :(得分:7)
您只需要table
功能:)
> table(X)
y
x A B C
1 2 0 1
2 1 0 0
3 0 2 0
4 1 0 2
5 0 1 0
6 2 1 2
7 1 0 1
8 3 1 0
答案 1 :(得分:3)
通过投射您的data.frame来实现这一点非常简单。
require(reshape2)
dcast(X, x ~ y, fun.aggregate=length)
或者,如果您希望事情变得更快(比如处理大数据),那么您可以使用dcast.data.table
包中新实现的data.table
函数:
require(data.table) ## >= 1.9.0
setDT(X) ## convert data.frame to data.table by reference
dcast.data.table(X, x ~ y, fun.aggregate=length)
两者都导致:
x A B C
1: 1 2 0 1
2: 2 1 0 0
3: 3 0 2 0
4: 4 1 0 2
5: 5 0 1 0
6: 6 2 1 2
7: 7 1 0 1
8: 8 3 1 0