如何 "join" 使用 Julia 中的 split-apply-combine 方法
How to "join" with the split-apply-combine method in Julia
我有一个有点复杂的连接(在 SQL 意义上)我想在 Julia 中执行,但我不知道如何让它在 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
我想要一个数据table,它只包含这个 table 的行,这些行是每只乌龟的个人(turtlenal?)在任何情况下都是最好的 运行。
我几乎可以得到我需要的东西
bestFinishes = by(data, [:turtle, :event]) do df
DataFrame(fastestTime = minimum(df[:time]))
end
但我还需要匹配行的照片列。我该怎么做?
好吧,我一输入这个我就意识到了一种基于 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
如果您只想有效地从非常大的数据集中修剪行,这会让事情变得更容易。我会看看我是否可以将这样的示例添加到文档中,因为它似乎没有被涵盖(或者只是假设比我更熟悉这种方法)。
我有一个有点复杂的连接(在 SQL 意义上)我想在 Julia 中执行,但我不知道如何让它在 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
我想要一个数据table,它只包含这个 table 的行,这些行是每只乌龟的个人(turtlenal?)在任何情况下都是最好的 运行。
我几乎可以得到我需要的东西bestFinishes = by(data, [:turtle, :event]) do df
DataFrame(fastestTime = minimum(df[:time]))
end
但我还需要匹配行的照片列。我该怎么做?
好吧,我一输入这个我就意识到了一种基于 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
如果您只想有效地从非常大的数据集中修剪行,这会让事情变得更容易。我会看看我是否可以将这样的示例添加到文档中,因为它似乎没有被涵盖(或者只是假设比我更熟悉这种方法)。