2013-11-09 1 views
1

Я пытаюсь сделать что-то, что в 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 

В результате я хотел бы для этого dataframe 20 строк будет:

110 3 
175 3 
180 3 

ответ

2

Что-то вроде этого?

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

#  count 
# 110  3 
# 175  3 
# 180  3 
+0

Отлично! Спасибо. – cumin