2016-09-18 6 views
-1

Iは、以下のようなデータ・フレームを有する:一意の値を見つけて対応する最大値を返す方法は?

X1 X2 
a 1 
a 2 
a 3 
b 4 
b 5 
b 1 
c 4 
c 4 
c 6 
d 1 
d 0 
e 6 
e 8 
e 9 

好ましい出力データフレームは、次のように、第一列および第二列からの対応する最大値から一意の値を返します。

X1 X2 
a 3 
b 5 
c 6 
d 1 
e 9 

ありがとうございます!

答えて

0

これは、操作ごとのグループの1つで実行できます。 base Rでは、aggregateはこの

aggregate(X2~X1, df1, max) 
# X1 X2 
#1 a 3 
#2 b 5 
#3 c 6 
#4 d 1 
#5 e 9 

それともdplyr

library(dplyr) 
df1 %>% 
    group_by(X1) %>% 
    summarise(X2= max(X2)) 

それともdata.table

library(data.table) 
setDT(df1)[, .(X2= max(X2)), by = X1] 

で速くオプションはになりません「X2」が降順に表示され、各「X1」の最初の観測値が選択されます

setDT(df1)[order(-X2, X1), head(.SD, 1), by = X1] 
関連する問題