【发布时间】:2014-05-22 12:26:00
【问题描述】:
我有一些数据(来自 R 课程作业,但这没关系)我想使用拆分-应用-组合策略,但我遇到了一些问题。数据位于 DataFrame 上,称为结果,每行代表一家医院。每列都有关于该医院的信息,例如名称、位置、费率等。
我的目标是获得每个州“心脏病发作率死亡率”最低的医院。
我在玩一些策略,但在使用 by 函数时遇到了问题:
best_heart_rate(df) = sort(df, cols = :Mortality)[end,:]
best_hospitals = by(hospitals, :State, best_heart_rate)
想法是按状态拆分hospitals 数据帧,按死亡率对每个子数据帧进行排序,得到最低的一个,然后将这些行合并到一个新的数据帧中
但是当我使用这个策略时,我得到了:
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 函数没有为 SubDataFrames 实现,所以我得到了一个错误。所以我使用了更糟糕的代码:
best_heart_rate(df) = (df[sortperm(df[:,:Mortality] , rev=true), :])[1,:]
best_hospitals = by(hospitals, :State, best_heart_rate)
似乎有效。但是现在有一个NA 问题:如何从子数据帧中删除NA 在Mortality 列上的行?有没有更好的策略来实现我的目标?
【问题讨论】:
标签: julia