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

R语言处理CSV:删除全零行与按特征分组计算均值

实现思路与代码示例

1. 删除Kriterium 1至Kriterium 4全为0的行

通过判断每行中目标列的总和是否为0来筛选有效行,以下是两种常用实现方式:

Base R 方式

# 读取数据(若未完成读取)
beispiel <- read.csv("Beispiel.csv", stringsAsFactors = FALSE)
# 定义目标列名(根据实际CSV列名调整)
kriterium_cols <- c("Kriterium.1", "Kriterium.2", "Kriterium.3", "Kriterium.4")
# 筛选出四列不全为0的行
beispiel_clean <- beispiel[rowSums(beispiel[kriterium_cols]) != 0, ]

dplyr 方式

若习惯tidyverse工具链,代码逻辑更直观:

library(dplyr)

beispiel_clean <- beispiel %>%
  # 保留四列不全为0的行,if_all检查指定列是否全满足等于0的条件,取反后筛选
  filter(!if_all(all_of(kriterium_cols), ~ .x == 0))

2. 按Merkmal分组计算均值并生成新数据框

生成的结果将包含唯一Merkmal及对应各Kriterium的均值,可直接用于条形图绘制:

Base R 方式

# 按Merkmal分组,计算每个Kriterium列的均值
merkmal_means <- aggregate(beispiel_clean[kriterium_cols], 
                           by = list(Merkmal = beispiel_clean$merkmal),
                           FUN = mean)

dplyr 方式

merkmal_means <- beispiel_clean %>%
  group_by(merkmal) %>%
  # 对所有Kriterium列计算均值,.groups = "drop"取消分组状态
  summarise(across(all_of(kriterium_cols), mean), .groups = "drop")

绘图补充说明

生成的merkmal_means是宽格式数据,若用ggplot2绘图,建议转成长格式:

library(ggplot2)
library(tidyr)

merkmal_means_long <- merkmal_means %>%
  pivot_longer(cols = all_of(kriterium_cols), 
               names_to = "Kriterium", 
               values_to = "Mean")

ggplot(merkmal_means_long, aes(x = merkmal, y = Mean, fill = Kriterium)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(x = "Merkmal", y = "均值", fill = "指标")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 20:09:57