楼主: ahazzh
5973 8

SAS中用DO循环与数组来计算相邻观测的差值 [推广有奖]

  • 2关注
  • 0粉丝

高中生

35%

还不是VIP/贵宾

-

威望
0
论坛币
56 个
通用积分
1.3000
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
1504 点
帖子
13
精华
0
在线时间
31 小时
注册时间
2016-10-25
最后登录
2024-12-1

楼主
ahazzh 发表于 2017-2-22 21:42:01 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
2017-02-22_看图王.png
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:do循环

沙发
wang1839 在职认证  发表于 2017-2-22 22:50:12
这个直接调用DIF函数就可以了,不用ITERATION

藤椅
zwnSAS121 发表于 2017-2-23 19:01:35
用lag函数

板凳
yingj7093 在职认证  发表于 2017-2-24 15:47:56
proc sort data=sales;by area;run;
data sales1;
set sales;
by area;
if area="东" then do;
dif1=dif(sales);
dif2=dif(profit);
end;
run;

报纸
ahazzh 发表于 2017-2-26 16:10:24
zwnSAS121 发表于 2017-2-23 19:01
用lag函数
dif更方便,但是题目要求是用DO循环和数组

地板
ahazzh 发表于 2017-2-26 16:11:50
yingj7093 发表于 2017-2-24 15:47
proc sort data=sales;by area;run;
data sales1;
set sales;
谢谢,但是我想不出用循环和数组的思路,如有想法请帮个忙

7
ahazzh 发表于 2017-2-26 16:12:37
wang1839 发表于 2017-2-22 22:50
这个直接调用DIF函数就可以了,不用ITERATION
那如果用数组和循环呢,大神可有啥思路,求赐教

8
ahazzh 发表于 2017-2-26 16:39:32
data sale;
set tmp1.sale;
if market = '东';
retain lag1 lag2;
array array{*}year sale profit lag1 lag2 dif1 dif2;
do i = 4 to 5;
        array{i+2} = array{i-2}-array{i};
        array{i} = array{i-2};
end;
drop i lag1 lag2;
run;

9
赵安豆 发表于 2024-8-20 16:40:46
在SAS中,如果你想使用DO循环和数组来计算数据集中的相邻观测之间的差值,可以按照以下步骤进行:

1. **创建数组**:首先定义一个数组以容纳你想要处理的变量。例如,如果你有一列名为`value`的数据,你可以这样创建数组:
   ```sas
   array myArray(*) value;
   ```

2. **使用DO循环**:接下来,在数据步中使用DO循环来遍历观测并计算差值。通常你会需要从第二行开始做这个操作以避免在第一行时没有前一行可以比较的情况。
   
3. **计算差值**:在循环内,你可以通过数组的当前元素减去前一个元素来计算差值。

以下是一个具体的示例代码,假设你有一个数据集`dataSet`,其中有一列名为`value`:

```sas
data dataSet;
input value;
datalines;
10
20
30
40
50
;
run;

data newDataSet;
set dataSet;
retain prevValue .Z; /* 保留前一个值,初始设置为缺失 */

array myArray(*) value;
if _N_ > 1 then do;
    diff = value - prevValue; /* 计算差值 */
    output; /* 输出结果 */
end;

prevValue = value; /* 更新前一个值为当前值 */
run;
```

在这个例子中,`newDataSet`将包含与原始数据集相同的行,并且会计算出每行与上一行之间的差值。注意,由于我们是在第二行之后开始计算差值的,第一行将不包含任何差值信息。

使用这种结构可以方便地处理数组中的每个元素,特别是当需要对连续观测进行比较或操作时。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-17 09:51