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

如何在SAS中创建长度不同的Datalines,生成指定结构的数据集

SAS数据集生成问题解决方案

问题分析

你原代码的问题在于:input a b; 默认要求每行读取两个数值变量,最后一行仅提供了一个数值4,SAS默认会尝试读取下一行数据补全变量,但数据行已结束,导致该数值无法被正确识别,最终出现4被“删除”的现象。

解决方案

根据你想要的结构,分两种情况给出代码:

情况1:生成长格式分组数据集(每个分组对应多个数值)

如果你想要的是a对应3个数值、b对应4个数值的分组结构(每个观测为分组标识+对应数值),可以定义分组变量和数值变量:

data my_data;
  length group $1;  /* 定义分组变量为字符型,长度1 */
  input group value;
  datalines;
a 1
a 2
a 3
b 1
b 2
b 3
b 4
;
run;

生成的数据集包含7个观测,核心结构如下:

groupvalue
a1
a2
a3
b1
b2
b3
b4

情况2:生成宽格式数据集(a有3个值,b有4个值,缺失值补全)

如果你希望保留原变量a和b,让a有3个非缺失值、b有4个非缺失值,可以添加missover选项,确保一行数据不足时剩余变量设为缺失:

data my_data;
  infile datalines missover;  /* 禁止跨行读取,数据不足时变量设为缺失 */
  input a b;
  datalines;
1 1
2 2
3 3
  4
;
run;

生成的数据集包含4个观测,第四个观测的a为缺失值(.),b为4,核心结构如下:

ab
11
22
33
.4

你也可以直接在最后一行的4前添加.表示a缺失,无需missover选项:

data my_data;
  input a b;
  datalines;
1 1
2 2
3 3
. 4
;
run;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:15:39