查找在表中重复两次以上的值

时间:2013-11-09 23:03:17

标签: r sparse-array

我正在尝试做一些在SQL中可能完成的事情“......有计数(ID)> 2 ......”

我想在重复两次以上的数据帧的两列子集中找到col的值。函数table给了我稀疏矩阵,我不知道如何将其结果转化为我想要的结果。对于矩阵,rowSums会找到总计,但我想要与标识符相关联的总数。

数据集mtcars更清楚地显示了我的意思。

x <- head(table( mtcars$hp, mtcars$disp), 20)
x[,1] <- as.numeric(rownames(x))
x
      71.1 75.7 78.7 79 95.1 108 120.1 120.3 121 140.8 145 146.7 160 167.6 225 258 275.8 301 304 318 350 351 360 400 440 460 472
  52    52    1    0  0    0   0     0     0   0     0   0     0   0     0   0   0     0   0   0   0   0   0   0   0   0   0   0
  62    62    0    0  0    0   0     0     0   0     0   0     1   0     0   0   0     0   0   0   0   0   0   0   0   0   0   0
  65    65    0    0  0    0   0     0     0   0     0   0     0   0     0   0   0     0   0   0   0   0   0   0   0   0   0   0
  66    66    0    1  1    0   0     0     0   0     0   0     0   0     0   0   0     0   0   0   0   0   0   0   0   0   0   0
  91    91    0    0  0    0   0     0     1   0     0   0     0   0     0   0   0     0   0   0   0   0   0   0   0   0   0   0
  93    93    0    0  0    0   1     0     0   0     0   0     0   0     0   0   0     0   0   0   0   0   0   0   0   0   0   0
  95    95    0    0  0    0   0     0     0   0     1   0     0   0     0   0   0     0   0   0   0   0   0   0   0   0   0   0
  97    97    0    0  0    0   0     1     0   0     0   0     0   0     0   0   0     0   0   0   0   0   0   0   0   0   0   0
  105  105    0    0  0    0   0     0     0   0     0   0     0   0     0   1   0     0   0   0   0   0   0   0   0   0   0   0
  109  109    0    0  0    0   0     0     0   1     0   0     0   0     0   0   0     0   0   0   0   0   0   0   0   0   0   0
  110  110    0    0  0    0   0     0     0   0     0   0     0   2     0   0   1     0   0   0   0   0   0   0   0   0   0   0
  113  113    0    0  0    1   0     0     0   0     0   0     0   0     0   0   0     0   0   0   0   0   0   0   0   0   0   0
  123  123    0    0  0    0   0     0     0   0     0   0     0   0     2   0   0     0   0   0   0   0   0   0   0   0   0   0
  150  150    0    0  0    0   0     0     0   0     0   0     0   0     0   0   0     0   0   1   1   0   0   0   0   0   0   0
  175  175    0    0  0    0   0     0     0   0     0   1     0   0     0   0   0     0   0   0   0   0   0   1   1   0   0   0
  180  180    0    0  0    0   0     0     0   0     0   0     0   0     0   0   0     3   0   0   0   0   0   0   0   0   0   0
  205  205    0    0  0    0   0     0     0   0     0   0     0   0     0   0   0     0   0   0   0   0   0   0   0   0   0   1
  215  215    0    0  0    0   0     0     0   0     0   0     0   0     0   0   0     0   0   0   0   0   0   0   0   0   1   0
  230  230    0    0  0    0   0     0     0   0     0   0     0   0     0   0   0     0   0   0   0   0   0   0   0   1   0   0
  245  245    0    0  0    0   0     0     0   0     0   0     0   0     0   0   0     0   0   0   0   1   0   1   0   0   0   0

我希望这个20行数据帧的结果是:

110 3
175 3
180 3

1 个答案:

答案 0 :(得分:2)

这样的东西?

df <- mtcars[ , c("hp", "disp")]
tt <- with(df, table(hp))
data.frame(count = tt[tt > 2])

#     count
# 110     3
# 175     3
# 180     3