我想在Julia中执行一些有点复杂的连接(在SQL意义上),但我无法弄清楚如何在split-apply-combine方法中使用它(虽然它可以写手工拿出)。看起来这应该很容易做到。问题看起来像这样。我有关于运行种族的海龟的数据的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
我想要一个只包含这个表的行的数据表,无论他们在哪里运行,每个都是龟的个人(turtlenal?)。
我几乎可以得到我需要的东西bestFinishes = by(data, [:turtle, :event]) do df
DataFrame(fastestTime = minimum(df[:time]))
end
但我还需要匹配行的照片列。我该怎么做?
答案 0 :(得分:2)
好吧,只要我输入此内容,我就会发现基于this question的方法。
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
如果您只想有效地从非常大的数据集中删除行,这会使事情变得更容易。我会看看我是否可以在文档中添加这样的示例,因为它似乎没有被覆盖(或者只是假设它比我更熟悉这个方法)。