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