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

如何在SAS中使用数组,及借助SAS数组完成数据计算操作

SAS数组使用及计算操作指南

1. SAS中数组的基础使用方法

SAS数组是一组同类型变量的集合,核心作用是批量处理同类型变量,无需重复编写多变量操作代码。

基础语法

ARRAY 数组名[下标规则] <$> <变量列表> <初始值>;

各参数说明:

  • 数组名:自定义名称,不能和当前数据步的其他变量重名
  • 下标规则:可以直接写元素个数,比如[10]代表数组包含10个元素,也可以写[*]让SAS自动根据变量列表统计元素数量
  • $:可选参数,仅当数组存储的是字符型变量时添加
  • 变量列表:要纳入数组管理的同类型变量,支持短横线缩写格式,比如ans1-ans10代表ans1到ans10共10个变量

结合示例数据的数组定义示例

首先读取示例学生答题源数据:

/* 导入示例学生答题数据 */
data scholar;
    input name $ ans1 $ ans2 $ ans3 $ ans4 $ ans5 $ ans6 $ ans7 $ ans8 $ ans9 $ ans10 $;
    datalines;
Anne C A C D B E D D B A
Vicky C C C E B E D B A 
Laurel D D C D B E D D B A
Victor C A C D B E D D A D
Dimple C A C D B E D D B A
Godfrey B D C B D D D B B A
Denny C D C B E E D B B A
Richard C A C D B E D D B A
;
run;

将10道题的答案变量定义为字符型数组:

/* 定义答案数组,*代表自动统计元素个数,$标识为字符型 */
array ans[*] $ ans1-ans10;

2. 通过SAS数组完成计算操作

数组最常用的场景就是批量遍历变量完成计算,以下结合示例数据给出两种常见的计算场景实现。

场景1:批量计算学生答题总分

假设评分规则为:A=5分、B=4分、C=3分、D=2分、E=1分,遍历数组计算每个学生的总分:

data scholar_total;
    set scholar;
    /* 定义答案数组 */
    array ans[*] ans1-ans10;
    total = 0;
    /* 用dim函数获取数组长度,后续新增答题变量无需修改循环逻辑 */
    do i = 1 to dim(ans);
        if ans[i] = 'A' then total + 5;
        else if ans[i] = 'B' then total + 4;
        else if ans[i] = 'C' then total + 3;
        else if ans[i] = 'D' then total + 2;
        else if ans[i] = 'E' then total + 1;
    end;
    drop i; /* 删除临时循环变量 */
run;

场景2:批量统计指定选项的出现次数

比如统计每个学生选择A选项的题数:

data scholar_count_a;
    set scholar;
    array ans[*] ans1-ans10;
    count_a = 0;
    do i = 1 to dim(ans);
        if ans[i] = 'A' then count_a + 1;
    end;
    drop i;
run;

用数组完成批量计算的优势非常明显,即使后续答题数量增加到几十上百道,只需要修改变量列表即可,不需要调整循环逻辑,代码复用性很高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:09:01