xとyのオカレンスのDataFrame
があります。 DataFrame
でそれぞれの発生がどのくらいの頻度で発生したのか、組み合わせが表すものは何%の割合であるのかを数えたいと思います。 a previous questionのおかげで、私は今、最初の部分を持っています。Julia DataFrame:col値の新しい列の合計を作成します。x by:y
using DataFrames
mydf = DataFrame(y = rand('a':'h', 1000), x = rand('i':'p', 1000))
mydfsum = by(mydf, [:x, :y], df -> DataFrame(n = length(df[:x])))
これが成功し:x
の各値は:y
の各値に発生頻度をカウント列を作成します。今度は、:y
の各値の頻度をカウントする新しい列を生成する必要があります。私は次の使用して新しいDataFrame
を作成することができます。
mydfsumy = by(mydf, [:y], df -> DataFrame(ny = length(df[:x])))
はDataFrames
一緒に参加しましょう。
mydfsum = join(mydfsum, mydfsumy, on = :y)
とパーセンテージ:yp
列
mydfsum[:yp] = mydfsum[:n] ./ mydfsum[:ny]
を作成しかし、これは一般的なデータ管理の問題のための不格好な回避策のように思えます。 RIでdplyr
を使用して1行でこのすべてを行うだろう:
mydf %>% groupby(x,y) %>% summarize(n = n()) %>% groupby(y) %>% mutate(yp = n/sum(n))