julia でデータフレームの特定の行、列へ値を代入(上書き?)したいのですがエラーが出てしまいました。
以下のような操作を行なった際にその下に示すようなエラーが出ています。
どのように描けば解決するかお教えいただけないでしょうか。
コード
julia
1using DataFrames 2 3d = DataFrame(col1=["A","A","B","C","C"], 4 col2=[1,1,1,1,1], 5 col3=[0,0,0,0,0]); 6 7q = d[:col1] .== "A" 8sum_col2 = sum(d[q, :col2]) 9 10d[q, :col3] = d[q ,:col2] / sum_col2
error
おそらく、型が一致していないためにエラーが出ていると思うのですが...
InexactError: Int64(Int64, 0.5) Stacktrace: [1] Type at ./float.jl:700 [inlined] [2] convert at ./number.jl:7 [inlined] [3] setindex! at ./array.jl:769 [inlined] [4] setindex! at ./subarray.jl:243 [inlined] [5] copyto!(::IndexCartesian, ::SubArray{Int64,1,Array{Int64,1},Tuple{Array{Int64,1}},false}, ::IndexLinear, ::Array{Float64,1}) at ./abstractarray.jl:731 [6] copyto! at ./abstractarray.jl:723 [inlined] [7] copyto! at ./broadcast.jl:833 [inlined] [8] copyto! at ./broadcast.jl:792 [inlined] [9] materialize!(::SubArray{Int64,1,Array{Int64,1},Tuple{Array{Int64,1}},false}, ::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(identity),Tuple{Array{Float64,1}}}) at ./broadcast.jl:751 [10] insert_multiple_entries!(::DataFrame, ::Array{Float64,1}, ::Array{Int64,1}, ::Symbol) at /Users/shotaro/.julia/packages/DataFrames/1PqZ3/src/dataframe/dataframe.jl:391 [11] setindex! at /Users/shotaro/.julia/packages/DataFrames/1PqZ3/src/dataframe/dataframe.jl:514 [inlined] [12] setindex!(::DataFrame, ::Array{Float64,1}, ::BitArray{1}, ::Symbol) at /Users/shotaro/.julia/packages/DataFrames/1PqZ3/src/dataframe/dataframe.jl:508 [13] top-level scope at In[137]:3
R で...
R だと以下のようにかけるものをそのまま、julia に書き直したら、
代入のところでエラーが起きてしまった次第です。
R
1d=data.frame(col1=c("A","A","B","C","C"), 2 col2=c(1,1,1,1,1), 3 col3=c(0,0,0,0,0)); 4 5q = d$col1=="A" 6sum_col2 = sum(d[q,]$col2) 7 8d[q, ]$col3 = d[q ,]$col2 / sum_col2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。