私はそのようなデータを持っています:
object category country
495647 1 RUS
477462 2 GER
431567 3 USA
449136 1 RUS
367260 1 USA
495649 1 RUS
477461 2 GER
431562 3 USA
449133 2 RUS
367264 2 USA
...
1 つのオブジェクトがさまざまな(category, country)
ペアで表示され、国が 1 つのカテゴリ リストを共有します。
それに別の列を追加したいと思います。これは、国ごとのカテゴリの重みになります。カテゴリのカテゴリに表示されるオブジェクトの数は、国内で合計が 1 になるように正規化されます (一意の(category, country)
ペアのみの合計)。
私は次のようなことができます:
aggregate(df$object, list(df$category, df$country), length)
そこから重みを計算しますが、元のデータで直接それを行うより効率的でエレガントな方法は何ですか.
望ましい出力例:
object category country weight
495647 1 RUS .75
477462 2 GER .5
431567 3 USA .5
449136 1 RUS .75
367260 1 USA .25
495649 1 RUS .75
477461 3 GER .5
431562 3 USA .5
449133 2 RUS .25
367264 2 USA .25
...
(category, country)
上記は、一意のペアの国内で合計されます。