如何在 Julia 中使用拆分-应用-组合方法"join"



我想在Julia中执行一个有点复杂的联接(在SQL意义上),但我不知道如何在split-apply-component方法中使其工作(尽管它可以手工编写)。看起来这应该很容易做到。问题看起来像这样。我有一个关于乌龟赛跑的数据框架:

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

我想要一个数据表,它只由这个表中的行组成,在任何情况下,这些行都是每只乌龟的个人(turtlenal?)最好的。我几乎可以用得到我需要的东西

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

但我也需要匹配行的照片列。我该怎么做?

好吧,我一输入这个,就意识到了一种基于这个问题的方法。

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

如果您只想高效地从一个非常大的数据集中修剪行,这会使事情变得更容易。我会看看我是否可以在文档中添加这样的例子,因为它似乎没有被覆盖(或者只是假设比我更熟悉这个方法)。

最新更新