在R中使用通配符按晶圆分组计算行级聚合统计量
解决方案:按行计算不同Wafer的统计量
针对你需要按行对Wafer(1)、Wafer(2)对应的列分别计算min、max、mean等统计量的需求,这里提供三种实用的实现方法:
方法一:dplyr(tidyverse风格,易读性强)
利用rowwise()开启按行处理模式,结合c_across()选中目标列,直接调用统计函数计算:
library(dplyr) # 假设你的数据框名为df df_processed <- df %>% rowwise() %>% mutate( Wafer1_Max = max(c_across(starts_with("Wafer(1)"))), Wafer1_Min = min(c_across(starts_with("Wafer(1)"))), Wafer1_Mean = mean(c_across(starts_with("Wafer(1)"))), Wafer2_Max = max(c_across(starts_with("Wafer(2)"))), Wafer2_Min = min(c_across(starts_with("Wafer(2)"))), Wafer2_Mean = mean(c_across(starts_with("Wafer(2)"))) ) %>% ungroup()
rowwise():将数据框切换为按行处理模式c_across(starts_with("Wafer(1)")):选中所有以Wafer(1)开头的列,组成向量供统计函数计算ungroup():处理完成后取消行分组,恢复常规数据框结构
方法二:data.table(高效处理大数据)
如果数据量较大,data.table的按行操作性能更优:
library(data.table) setDT(df) df[, c("Wafer1_Max", "Wafer1_Min", "Wafer1_Mean", "Wafer2_Max", "Wafer2_Min", "Wafer2_Mean") := list( max(.SD[, grep("Wafer\\(1\\)", names(.SD)), with = FALSE]), min(.SD[, grep("Wafer\\(1\\)", names(.SD)), with = FALSE]), mean(.SD[, grep("Wafer\\(1\\)", names(.SD)), with = FALSE]), max(.SD[, grep("Wafer\\(2\\)", names(.SD)), with = FALSE]), min(.SD[, grep("Wafer\\(2\\)", names(.SD)), with = FALSE]), mean(.SD[, grep("Wafer\\(2\\)", names(.SD)), with = FALSE]) ), by = 1:nrow(df)]
setDT(df):将普通数据框转为data.table格式grep("Wafer\\(1\\)", names(.SD)):通过正则匹配选中Wafer(1)相关列(括号需转义)by = 1:nrow(df):指定按每行分组处理:=:直接在原数据框添加新列,避免额外内存开销
方法三:基础R实现(无需第三方包)
不想加载额外包的话,用基础R的apply系列函数也能完成:
# 提取Wafer1和Wafer2的列索引 wafer1_cols <- grep("Wafer\\(1\\)", names(df)) wafer2_cols <- grep("Wafer\\(2\\)", names(df)) # 计算统计量并添加为新列 df$Wafer1_Max <- apply(df[, wafer1_cols], 1, max) df$Wafer1_Min <- apply(df[, wafer1_cols], 1, min) df$Wafer1_Mean <- apply(df[, wafer1_cols], 1, mean) df$Wafer2_Max <- apply(df[, wafer2_cols], 1, max) df$Wafer2_Min <- apply(df[, wafer2_cols], 1, min) df$Wafer2_Mean <- apply(df[, wafer2_cols], 1, mean)
grep:匹配列名得到目标列的索引apply(..., 1, max):按行(参数1代表行)对选中列应用max函数,返回每行的最大值向量
以上三种方法都能生成你预期的结果,可根据数据规模和个人习惯选择。
内容的提问来源于stack exchange,提问作者thentangler
相关产品推荐
相关产品推荐

