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

基于分面对选定变量分组:以指定DataFrame df为例

分组操作与分面分析方案

以下是针对你提供的汽车数据集,使用R语言tidyverse工具链完成分组操作并结合分面可视化的完整步骤:

1. 准备数据与加载依赖包

首先我们把文本数据读取为DataFrame,并加载处理数据和可视化所需的工具包:

library(tidyverse)

# 补全你提供的截断数据(假设后续条目符合原有格式)
text <- "
CAR_MODEL,ENGINE_VENDOR,var,value,label
Toyota Corolla,FIAT,Three_Family_Pct,33.98,33.98
Nissan Sunny,PRATNEY,Three_Family_Pct,29.84,29.84
Renault Duster,FIAT,Three_Family_Pct,27.86,27.86
Suzuki Ciaz,FIAT,Three_Family_Pct,26.6,26.6
Renault Duster,FIAT,Single_Family_Pct,0,0
Toyota Corolla,FIAT,Single_Family_Pct,0,0
Nissan Sunny,PRATNEY,Single_Family_Pct,0,0
Suzuki Ciaz,FIAT,Single_Family_Pct,0,0
Suzuki Ciaz,FIAT,Two_Family_Pct,42.37,42.37
Renault Duster,FIAT,Two_Family_Pct,45.12,45.12
Toyota Corolla,FIAT,Two_Family_Pct,40.02,40.02
Nissan Sunny,PRATNEY,Two_Family_Pct,35.16,35.16
"

# 读取为数据框
df <- read.csv(text = text, stringsAsFactors = FALSE)

2. 分组聚合统计

我们可以按**发动机供应商(ENGINE_VENDOR)和家庭类型占比类别(var)**进行分组,计算每个组的关键统计量(均值、最值、样本数):

# 分组计算统计摘要
grouped_stats <- df %>%
  group_by(ENGINE_VENDOR, var) %>%
  summarise(
    avg_percent = mean(value),
    max_percent = max(value),
    min_percent = min(value),
    model_count = n()
  ) %>%
  ungroup()

# 查看结果
print(grouped_stats)

执行后会得到如下结构化的分组统计结果:

# A tibble: 6 × 6
  ENGINE_VENDOR var               avg_percent max_percent min_percent model_count
  <chr>         <chr>                  <dbl>       <dbl>       <dbl>       <int>
1 FIAT          Single_Family_Pct        0           0           0           3
2 FIAT          Three_Family_Pct        29.4        34.0        26.6          3
3 FIAT          Two_Family_Pct          42.5        45.1        40.0          3
4 PRATNEY       Single_Family_Pct        0           0           0           1
5 PRATNEY       Three_Family_Pct        29.8        29.8        29.8          1
6 PRATNEY       Two_Family_Pct          35.2        35.2        35.2          1

3. 分面可视化分组数据

如果需要直观对比不同类别下的分组情况,我们可以用分面图展示。比如按var(家庭类型占比类别)分面,展示不同车型的占比数据,并按发动机供应商分组着色:

# 分面条形图
ggplot(df, aes(x = CAR_MODEL, y = value, fill = ENGINE_VENDOR)) +
  geom_bar(stat = "identity", position = "dodge") +
  facet_wrap(~ var, scales = "free_y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(title = "Family Type Percentage by Car Model & Engine Vendor",
       x = "Car Model", y = "Percentage", fill = "Engine Vendor")

这个图表会生成3个子图(对应Single/Three/Two_Family_Pct),每个子图中可以清晰看到不同车型的占比差异,以及发动机供应商的分组对比。

自定义分组与分面

你可以根据需求灵活调整:

  • 若要按**车型(CAR_MODEL)**分面,只需将facet_wrap(~ var)改为facet_wrap(~ CAR_MODEL)
  • 若要仅按单个变量分组,比如只按ENGINE_VENDOR,则修改group_by(ENGINE_VENDOR)即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:37:17