计算R中配对出现次数?

时间:2013-05-27 20:09:01

标签: r

我想要做的是检查有序的x和y值对的数据框(在这个特定的集合中只有4个可能的值)并计算每个特定值发生的次数。

例如,我的数据框有第1列和第2列,如下所示:

data <- data.frame(col1=c(-.25, 0, -.25, -.77, 0, 0, 0, -2.5),
                   col2=c(0.9, 0, 0.9, 2.9, 0, 0, 0, 0.9))

我想计算每对可能出现的次数。我发现最接近的是table(),它返回16个可能的值,这不是我需要的。 I.E,我试试

test=as.data.frame(table(data[,1:2]))

将两列作为测试提供给表。我得到的是一个列举9个“可能”组合的矩阵 - 我猜它的作用是简单地交叉引用每个列值并计算它出现的次数。

编辑:我意识到表格第三列中的非零条目是我想要的,但我最终需要这个来执行24个集合,所以它应该尽可能自动化。

2 个答案:

答案 0 :(得分:3)

鉴于集合数量很多(24),table可能会创建太多组合。您可以使用这种替代方法:

data$count <- 1
aggregate(count ~ ., data, FUN = sum)
#    col1 col2 count
# 1  0.00  0.0     4
# 2 -2.50  0.9     1
# 3 -0.25  0.9     2
# 4 -0.77  2.9     1

答案 1 :(得分:0)

子集test删除零值:

test=as.data.frame(table(data[,1:2]))
test <- test[which(!test$Freq==0),]

##    col1 col2 Freq
##4      0    0    4
##5   -2.5  0.9    1
##7  -0.25  0.9    2
##10 -0.77  2.9    1