我正在嘗試從 R 轉移到 Julia。
所以我有一個包含 2 列價格和 2 個條件列的資料集,告訴我價格是“便宜”還是“昂貴”。
所以我想計算有多少“便宜”或“昂貴”的條目。
所以使用這個包DataStructures我得到了這個:
using DataStructures
counter(df.p_orellana)
Accumulator{Union{Missing, String}, Int64} with 3 entries:
"expensive" => 18
missing => 2
"cheap" => 22
這將與table()R 中的函式相同。
有沒有辦法使這些值成比例?
在 R 中它會prop.Table()起作用,但我不知道如何用 Julia 來實作。
我想擁有:
Accumulator{Union{Missing, String}, Int64} with 3 entries:
"expensive" => 0.4285
missing => 0.0476
"cheap" => 0.5238
提前致謝!
uj5u.com熱心網友回復:
使用 FreqTables.jl 包。
下面是一個例子:
julia> using FreqTables
julia> data = [fill("expensive", 18); fill(missing, 2); fill("cheap", 22)];
julia> freqtable(data)
3-element Named Vector{Int64}
Dim1 │
──────────┼───
cheap │ 22
expensive │ 18
missing │ 2
julia> proptable(data)
3-element Named Vector{Float64}
Dim1 │
──────────┼─────────
cheap │ 0.52381
expensive │ 0.428571
missing │ 0.047619
結果按排序順序顯示。如果您想要其他訂單,請額外使用 CategoricalArrays.jl 包并設定適當的級別順序:
julia> using CategoricalArrays
julia> cat_data = categorical(data, levels=["expensive", "cheap"]);
julia> freqtable(cat_data)
3-element Named Vector{Int64}
Dim1 │
────────────┼───
"expensive" │ 18
"cheap" │ 22
missing │ 2
julia> proptable(cat_data)
3-element Named Vector{Float64}
Dim1 │
────────────┼─────────
"expensive" │ 0.428571
"cheap" │ 0.52381
missing │ 0.047619
uj5u.com熱心網友回復:
添加基本的 Julia方法。
該功能tableprop可以放入~/.julia/config/startup.jl自動加載。
function tableprop(data::Vector)
uniq = unique(data)
res = [sum(data .=== i) for i in uniq]
try
DataFrame(data=uniq, count=res, prop=res/sum(res))
catch
hcat(uniq, res, res/sum(res))
end
end
julia> using DataFrames # just for pretty print
julia> tableprop(df)
3×3 DataFrame
Row │ data count prop
│ String? Int64 Float64
─────┼───────────────────────────
1 │ cheap 5 0.5
2 │ expensive 3 0.3
3 │ missing 2 0.2
資料
julia> df = ["cheap","expensive",missing,"cheap","cheap",
"expensive","expensive","cheap",missing,"cheap"]
10-element Vector{Union{Missing, String}}:
"cheap"
"expensive"
missing
"cheap"
"cheap"
"expensive"
"expensive"
"cheap"
missing
"cheap"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/402564.html
標籤:
