Julia DataFrames:拆分应用合并策略的问题

Julia DataFrames:拆分应用合并策略的问题,julia,Julia,我有一些数据(来自R课程作业,但这并不重要),我想使用拆分-应用-合并策略,但我遇到了一些问题。数据位于一个称为“结果”的数据框中,每一行代表一家医院。每一列都有关于该医院的信息,如名称、位置、费用等 我的目标是获得各州“心脏病发作死亡率”最低的医院。 我在玩弄一些策略,在使用by函数时遇到了一个问题: best_heart_rate(df) = sort(df, cols = :Mortality)[end,:] best_hospitals = by(hospitals, :State, b

我有一些数据(来自R课程作业,但这并不重要),我想使用拆分-应用-合并策略,但我遇到了一些问题。数据位于一个称为“结果”的数据框中,每一行代表一家医院。每一列都有关于该医院的信息,如名称、位置、费用等

我的目标是获得各州“心脏病发作死亡率”最低的医院。

我在玩弄一些策略,在使用
by
函数时遇到了一个问题:

best_heart_rate(df) = sort(df, cols = :Mortality)[end,:]
best_hospitals = by(hospitals, :State, best_heart_rate)
其想法是将医院的数据框按州划分,按死亡率对每个子数据框进行排序,得到最低的子数据框,并将这些行合并到一个新的数据框中

但当我使用这个策略时,我得到:

ERROR: no method nrow(SubDataFrame{Array{Int64,1}})
 in sort at /home/paulo/.julia/v0.3/DataFrames/src/dataframe/sort.jl:311
 in sort at /home/paulo/.julia/v0.3/DataFrames/src/dataframe/sort.jl:296
 in f at none:1
 in based_on at /home/paulo/.julia/v0.3/DataFrames/src/groupeddataframe/grouping.jl:144
 in by at /home/paulo/.julia/v0.3/DataFrames/src/groupeddataframe/grouping.jl:202
我假设没有为子数据帧实现
nrow
函数,因此我得到了一个错误。所以我使用了一个更糟糕的代码:

best_heart_rate(df) = (df[sortperm(df[:,:Mortality] , rev=true), :])[1,:]
best_hospitals = by(hospitals, :State, best_heart_rate)

似乎有效。但是现在有一个
NA
问题:如何从
detairity
列上具有
NA
的子数据帧中删除行?是否有更好的策略来实现我的目标?

如果我正确理解你的话,我认为这可能会奏效:

# Let me make up some data about hospitals in states
hospitals = DataFrame(State=sample(["CA", "MA", "PA"], 10), mortality=rand(10), hospital=split("abcdefghij", ""))
hospitals[3, :mortality] = NA

# You can use the indmax function to find the index of the maximum element
by(hospitals[complete_cases(hospitals), :], :State, df -> df[indmax(df[:mortality]), [:mortality, :hospital]])



    State   mortality             hospital
1   CA      0.9469632421111882    j
2   MA      0.7137144590022733    f
3   PA      0.8811901895164764    e

谢谢这正是我想要的,但我的数据帧在
死亡率
行上有
NA
s。函数
indmax()
尚未为数据帧实现,因此我仍然得到一个错误。您可以使用
complete\u cases
仅选择数据帧的完整行。我已经编辑了回复。对于数据帧,应该有一个
dropna