2016-07-28 4 views
1

たとえば、気質データを使用して、 毎月の最高気温を計算します。 この最高温度が発生した日を守ってください。dplyr group_byを使用すると、変数を別の変数の最大値に保つ方法を要約していますか?

library(dplyr) 
# Maximum temperature per month 
airqualitymax <- airquality %>% 
    group_by(Month) %>% 
    summarise(maxtemp = max(Temp)) 
# Day of the month on which the max occured 
airquality %>% 
    left_join(airqualitymax, by = "Month") %>% 
    filter(Temp == maxtemp) 

は、今では日が 、一意ではないと思われるが、それはユニークだったと仮定し、最大は集計で発生する日を選択する方法は、直接()はありますか?

+2

)または最後slice(n()))最初の観測を得ますか? –

+0

ああ、ありがとう!私は 'which.max()'について知らなかった –

答えて

1

我々は降順でarrange「TEMP」になるであろう各「月」

airquality %>% 
    group_by(Month) %>% 
    slice(which.max(Temp)) 

高速オプションの最大「温度」を有する行を保つためsliceを使用することができる(または昇順)と `)日=日[which.max(温度)]、(あなたが`意味するか...(maxtemp = MAX(温度まとめ

airquality %>% 
    group_by(Month) %>% 
    arrange(desc(Temp)) %>% 
    slice(1L) 
+1

素晴らしい、私はあなたの答えを受け入れる。要約は素敵な短いデータフレームを提供するので、上記の@docendo discimusによって提供される 'sumarise(day = Day.max(Temp))'の解決法も好きです。 –

+0

@PaulRougieux私はあなたが行全体を望むと思った。 – akrun

+0

両方の方法が問題ありません。私は私の質問でこれについて明確ではなかった。実際のデータでは、各国の最大消費が発生した年を見ています。現時点では、私はデータセットを探索しており、より多くの情報が得られるので、ソリューション全体を使用します。次に、これを行う関数を実装すると、他のデータフレームを使用することができます。短い行には国、最大(消費)、年だけが含まれます。 –

関連する問題