SAS怎么进行分组求和

班级 姓名 分数
1班 A 66
1班 B 69
1班 AA 88
5班 C 65
5班 K 70
6班 M 96
6班 N 100
……
如何求出每列中班级分数的和?
输出的格式为:1班 A 66 223

该回答引用ChatGPT

该代码首先定义了一个空对象 sumByClass,用于存储每个班级的分数总和。然后将输入数据按行分割,遍历每一行数据,提取出班级名称和分数,并将分数加到相应班级的分数总和中。

最后,使用 Object.entries 方法遍历 sumByClass 对象,输出每个班级的分数总和。输出结果与 Python 实现相同。

注意,在 JavaScript 中,字符串的 split 方法返回的是数组,而不是 Python 中的列表。因此在提取班级名称和分数时,需要使用数组解构语法。另外,在 JavaScript 中使用 for...of 循环可以方便地遍历对象的键值对。

javascript


const data = `1班 A 66
1班 B 69
1班 AA 88
5班 C 65
5班 K 70
6班 M 96
6班 N 100`;

const sumByClass = {};

data.split('\n').forEach((line) => {
  const [className, _, score] = line.split(' ');
  if (sumByClass[className]) {
    sumByClass[className] += parseInt(score);
  } else {
    sumByClass[className] = parseInt(score);
  }
});

for (const [className, totalScore] of Object.entries(sumByClass)) {
  console.log(`${className} ${totalScore}`);
}

在 SAS 中,可以使用 PROC SQL 语句来进行分组求和。

PROC SQL;
  SELECT 班级, 姓名, 分数, SUM(分数) AS 班级分数和
  FROM 表名
  GROUP BY 班级;
QUIT;