You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R的table函数按ID分组实现multiple_products交叉频率统计

问题原因

你当前的代码存在两个核心问题:

  • dplyr的group_by()仅为后续dplyr族函数声明分组逻辑,不会自动对原始行数据去重,直接传递给table()的还是完整的行级数据
  • 管道操作中直接调用d$multiple_products是取原始数据的整列,完全不受上游group_by()逻辑的影响,所以统计结果是行级频率而非ID级频率,不同数据类型拼接还会触发类型错误

解决方案

方法1:仅使用R基础包实现

先提取ID和multiple_products的唯一组合,再调用table()统计:

# 每个ID仅保留一行对应记录,再统计频率
table(unique(d[, c("ID", "multiple_products")])$multiple_products)

运行输出即为你需要的结果:

0 1 
1 1

方法2:dplyr管道配合基础table()实现

如果习惯用管道操作,先做ID级去重再统计即可:

library(dplyr)
dtable <- d %>%
  # 保留ID和multiple_products的唯一组合,同ID仅保留1行
  distinct(ID, multiple_products) %>%
  # 提取multiple_products字段
  pull(multiple_products) %>%
  # 调用基础包table统计
  table()

内容的提问来源于stack exchange,提问作者logjammin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:24:00