2015-12-11 71 views
2

我想根據R數據表中特定列進行分組後的條件來選擇行的子集。 以Mtcars數據爲例。如何在R數據表中的特定列之後選擇行的子集

dt_mtcars <- as.data.table(mtcars) 


dt_mtcars[,.N,by=.(hp)] 

    hp N 
1: 110 3 
2: 93 1 
3: 175 3 
4: 105 1 
5: 245 2 
6: 62 1 
7: 95 1 
8: 123 2 
9: 180 3 
10: 205 1 
11: 215 1 
12: 230 1 
13: 66 2 
14: 52 1 
15: 65 1 
16: 97 1 
17: 150 2 
18: 91 1 
19: 113 1 
20: 264 1 
21: 335 1 
22: 109 1 
    hp N 

現在我想實現像選擇基礎上的計數如子組數據在這裏我想有dt_mtcars所有的數據,其中N> 1 如果我嘗試這樣的事情(這在概念上我試圖實現)它顯示所有行而不是獲取N大於1的行。

dt_mtcars[.N>1,.SD,by=.(hp)] 

請協助。

回答

3

我們可以做這使用if

dt_mtcars[, if(.N>1) .SD ,hp] 
2

你可以做的兩個步驟:

dt_mtcars[,Count:=.N, by=.(hp)][Count>1, .SD, .SDcols = rev(rev(1:length(names(dt_mtcars)))[-1])] 

編輯:實現mtcars沒有不僅僅是那些兩排,更新SDcols

編輯:固定刪除計數

+0

我不想創建一個額外的列:( – Bg1850

+0

然後只是過濾掉你想要的列,編輯上面的 – Shape

+0

無論如何我首先創建一個列,在這裏我用mtcars作爲例子,在實際數據中我有它有數百萬行,我想避免創建列,除非這是我唯一的選擇 – Bg1850

相關問題