我有这样的数据:
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
...
其中一个对象以不同的形式出现,(category, country)
并且国家共享一个类别列表。
我想在其中添加另一列,这将是每个国家/地区的类别权重 - 出现在某个类别的类别中的对象数量,标准化为一个国家/地区内的总和为 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)
配对,上述内容在国家/地区内总计为一个。