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

如何基于多列对R语言数据框分类并生成交叉统计表格

要生成你需要的这种交叉表格式(行是V2的等级,列是V3的类别,标记每个组合是否存在),可以用dplyr搭配tidyr的pivot_wider来实现,具体代码如下:

library(dplyr)
library(tidyr)

# 处理数据生成目标格式
df %>%
  group_by(V2, V3) %>%
  summarise(present = 1, .groups = "drop") %>%  # 标记每个V2-V3组合存在
  pivot_wider(
    names_from = V3, 
    values_from = present, 
    values_fill = ""  # 不存在的组合留空
  )

运行后会得到类似这样的输出:

# A tibble: 5 × 5
  V2         amira boro car  dim  
  <fct>      <chr> <chr> <chr> <chr>
1 Level ii   ""    ""    "1"   ""   
2 Level iia  "1"   ""    "1"   "1"   
3 Level iib  "1"   "1"   "1"   ""   
4 Level iiia ""    ""    "1"   ""   
5 Level iiic "1"   "1"   ""    "" 

步骤说明:

  1. 分组标记存在性:用group_by(V2, V3)按两个列分组,然后summarise(present = 1)给每个存在的组合打上标记(如果需要统计实际出现次数,把1换成n()即可)。
  2. 转宽格式:pivot_wider把V3的各个类别(amira/boro/car/dim)转成列,用present的值填充单元格,不存在的组合用空字符串填充,和你想要的格式匹配。

如果你希望单元格显示实际出现次数而非存在标记,只需要调整summarise部分:

df %>%
  group_by(V2, V3) %>%
  summarise(count = n(), .groups = "drop") %>%
  pivot_wider(names_from = V3, values_from = count, values_fill = 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:56:12