1

我想要做的是检查 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 个可能的值,这不是我需要的。IE,我试试

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

它将两列作为测试输入到表中。我得到的是一个矩阵,它枚举了 9 个“可能的”组合——我猜它所做的只是交叉引用每个列的值并计算它出现的次数。

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

4

2 回答 2

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
于 2013-05-27T20:27:45.440 回答
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
于 2013-05-27T20:29:59.193 回答