2015-11-22 52 views
1

尋找最大價值我有一個data.table在data.table

> x <- data.table(neighborhood = c("a", "b", "c"), cat1 = c(1, 1, 100), cat2 = c(50, 1, 1), cat3 = c(1, 1, 1)) 
> x 
    neighborhood cat1 cat2 cat3 
1:   a 1 50 1 
2:   b 1 1 1 
3:   c 100 1 1 
> 

我想找到大值(例如)>= 50

我沒有我想看到這個(這是輸出)以特定的方式,但是這會工作:

> z 
    neighborhood category value 
1:   a  cat1 50 
2:   c  cat2 100 

我一直令人頭大我的大腦,但我可以」不要想到這個功能。有什麼建議麼?

+2

'melt'然後子集像往常一樣? – A5C1D2H2I1M1N2O1R2T1

回答

1

你可以使用melt()

melt(x, "neighborhood")[value >= 50, .SD, keyby = neighborhood] 
# neighborhood variable value 
# 1:   a  cat2 50 
# 2:   c  cat1 100 

或者,如果你不關心命令你可以使用

melt(x, "neighborhood")[value >= 50] 
# neighborhood variable value 
# 1:   c  cat1 100 
# 2:   a  cat2 50 
+0

工程就像一個魅力,謝謝。 – Chris