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

R语言使用tidyverse/dplyr生成计数型虚拟变量

R语言tidyverse实现分组计数转宽表方案

直接使用tidyverse生态下的dplyr、tidyr函数即可完成需求,无需额外依赖,核心逻辑分两步:

  • 先按ID和FRUIT两列分组,统计每个ID对应每种水果的出现次数
  • 将长格式的计数结果转换为宽表,自动生成对应水果的列,没有出现的水果计数填充为0

完整可运行代码如下:

# 加载tidyverse生态包
library(tidyverse)

# 构造示例数据集
df <- tibble(
  ID = c("001", "002", "001", "002", "003", "001"),
  FRUIT = c("apple", "grape", "banana", "apple", "apple", "apple")
)

# 核心处理逻辑
df %>%
  count(ID, FRUIT, name = "fruit_count") %>%
  pivot_wider(
    names_from = FRUIT,
    values_from = fruit_count,
    # 自动给列名加FRUIT_前缀,和示例输出命名保持一致
    names_prefix = "FRUIT_",
    # 对应ID没有出现过的水果,计数填0
    values_fill = 0
  )

运行后输出结果完全匹配预期结构:

# A tibble: 3 × 4
  ID    FRUIT_apple FRUIT_banana FRUIT_grape
  <chr>       <int>        <int>       <int>
1 001             2            1           0
2 002             1            0           1
3 003             1            0           0

如果不需要列名前缀,直接删除names_prefix = "FRUIT_"参数即可,生成的列名会直接使用水果名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:12:23