微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R 操作除以分组求和序列中非零观测的数量

如何解决R 操作除以分组求和序列中非零观测的数量

我正在尝试解决一个问题,该问题涉及一对项目出现在组中的比例总和。问题是我上一篇文章的后续,可以找到here

我的数据如下:

data <- data.frame(group = c(1,1,2,3,3),item = c("Wheat","Coal","Steel","Iron","Wheat","Iron"),quantity = c(5,10,5,20,15,15),proportion = c(0.25,0.5,0.25,0.57,0.14,0.29,0.375,0.375))

我使用了之前 user 中的 question 建议的以下 dplyr 操作:

result.rep <- crossing(item1 = data$item,item2 = data$item,group = data$group) %>%
  filter(item1 < item2) %>%
  left_join(data,by = c("item1" = "item","group")) %>%
  left_join(data,by = c("item2" = "item","group")) %>%
  mutate(interrelation = proportion.x * proportion.y / 3) %>%
  group_by(item1,item2) %>%
  dplyr::summarize(result = sum(interrelation),.groups = "drop")

我仍然面临的问题是,在真实数据中,我有 115 个不同的项目,而不是可重复数据中的 4 个。同样在真实数据中,有些项目从未出现在同一组中。因此,根据观察到的组内非零对的数量,我除以的数字(在可重现示例中为 3)在实际数据中应该有所不同。

修改了原始的可重现数据以包含不同非零对的问题:

data <- data.frame(group = c(1,0.8,0.2,0.375))

修改后的数据中,Wheat 和 Steel 从未出现在具有非零值的同一组中。因此,这些项目可能具有的非零对的数量为 2(小麦 - 煤炭、小麦 - 铁)。而对于项目 Coal,它有 3 个非零对(Coal - Wheat、Coal - Iron、Coal - Steel),因为它以非零值与其他每个项目一起出现在一个组中至少一次。

总而言之,除数应根据每个项目具有的非零对的数量而变化。

求和序列中是否存在循环操作来解释这种特殊性?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。