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

R语言:如何分组含重复行名的矩阵以修复燃料产能条形图?

问题描述

我用row.names函数跟踪不同燃料类型发电设施的产能,创建条形图时本该展示目标6种燃料的产能分布,却得到错误的条形图。查看矩阵后发现,每个重复字符串的行名末尾被自动添加了数字,导致分组失效。

问题根源

你的代码存在几个关键问题:

  • group_by(primary_fuel)后没有指定聚合函数(比如求和、均值),导致分组未正确计算各燃料类型的总产能
  • 变量名大小写不一致(pf2和PF2混用)
  • power_matrix未定义,直接调用会报错
  • 处理generated列时的逻辑冗余,且未清理NA值影响后续计算
修复方案

以下是修正后的完整代码,用tidyverse规范流程实现分组统计和可视化:

# 安装并加载包(只需安装一次,可注释重复安装命令)
# install.packages('tidyverse')
library(tidyverse)

# 读取数据
Power_Facilities <- read.csv('powerplants (global) - global_power_plants.csv')

# 删除不需要的列
drop <- c("secondary.fuel", "other_fuel2", "other_fuel3", "geolocation_source")
PF <- Power_Facilities[,!(names(Power_Facilities) %in% drop)]

# 筛选产能>2000MW的设施,清理发电量列的无效值
PF <- PF %>%
  filter(capacity.in.MW > 2000) %>%
  mutate(
    # 优先用实际发电量,缺失时用估算值,统一转为数值型
    generated = if_else(is.na(generation_gwh_2021), estimated_generation_gwh_2021, generation_gwh_2021) %>% as.numeric()
  ) %>%
  # 移除发电量为NA的无效行
  drop_na(generated)

# 按燃料类型分组,计算总产能和总发电量
pf_summary <- PF %>%
  group_by(primary_fuel) %>%
  summarize(
    total_capacity = sum(capacity.in.MW, na.rm = TRUE),
    total_generation = sum(generated, na.rm = TRUE)
  ) %>%
  # 过滤无数据的燃料类型
  filter(total_capacity > 0)

# 用base R绘制总产能条形图
barplot(pf_summary$total_capacity, 
        names.arg = pf_summary$primary_fuel,
        las = 2, # 旋转x轴标签避免重叠
        ylab = "总产能(MW)",
        main = "不同燃料类型发电设施总产能分布",
        col = "steelblue")

# 用ggplot2绘制更美观的可视化(可选)
ggplot(pf_summary, aes(x = primary_fuel, y = total_capacity)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(x = "燃料类型", y = "总产能(MW)", title = "不同燃料类型发电设施总产能分布") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
关键说明
  1. 正确分组聚合:用summarize()配合sum()计算每个燃料类型的总产能/发电量,确保每个燃料类型只对应一个统计值,不会出现行名重复加数字的问题
  2. 数据清理:用drop_na()移除无效的NA行,保证统计结果准确
  3. 变量规范:统一变量名,避免大小写错误;不再依赖row.names进行分组,直接用primary_fuel作为分组键
  4. 可视化优化:旋转x轴标签避免文本重叠,提升图表可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:45:23