1

Juliaで実行したい(SQLの意味で)やや複雑な結合がありますが、分割-適用-結合メソッドでそれを機能させる方法がわかりません(手動で書き出すことはできますが) )。ただし、これは簡単に行う必要があるようです。問題はこんな感じ。レースを実行しているタートルに関するデータの DataFrame があります。

using DataFrames
data = DataFrame()
data[:turtle] = ["Suzy", "Suzy", "Bob", "Batman", "Batman", "Batman", "Bob"]
data[:event] = ["5k", "5k", "1k", "5k", "5k", "1k", "1k"]
data[:time] = [6.2 , 6.7 , 2.1, 3.2, 3.1, 0.9, 2.4]
data[:photo] =["111.jpg","123.jpg","145.jpg","167.jpg","189.jpg","190.jpg","195.jpg"]
data

このテーブルの行だけで構成されるデータテーブルが欲しいのですが、これは各タートルの個人的な (タートルナル?) 実行されたイベントで最高のものです。必要なものはほぼ手に入る

bestFinishes = by(data, [:turtle, :event]) do df
     DataFrame(fastestTime = minimum(df[:time]))
end

しかし、一致する行の写真列も必要です。どうすればいいですか?

4

1 に答える 1

2

さて、これを入力するとすぐに、この質問に基づいてそれを行う1つの方法に気付きました.

bestFinishes = by(data, [:turtle, :event]) do df
    DataFrame(fastestTime = minimum(df[:time]), winningPhoto = df[indmin(df[:time]),:photo] )
end

ただし、これを行うより一般的な方法は次のとおりです。

bestFinishes = by(data, [:turtle, :event]) do df
    thisFastestTime = minimum(df[:time])
    df[df[:time].==thisFastestTime,:]
end

これにより、非常に大きなデータ セットから行を効率的に削除したい場合に、作業が簡単になります。このような例をドキュメントに追加できるかどうかを確認します。これは、カバーされていないように見えたからです (または、この方法に私が持っていたよりも精通していると仮定しただけです)。

于 2015-04-09T20:57:16.497 に答える