楼主: lirui1980
8018 2

[求助]如何设置变量,变量值等于上一行观测的某个变量值 [推广有奖]

  • 0关注
  • 0粉丝

小学生

71%

还不是VIP/贵宾

-

威望
0
论坛币
46 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
118 点
帖子
8
精华
0
在线时间
0 小时
注册时间
2008-10-16
最后登录
2009-2-7

楼主
lirui1980 发表于 2008-10-26 14:15:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

现有id(字符型)   k(数值型,仅取0、1)   holdings(数值型)三个变量 

设置新变量new

目标:

1、当k=1时,new=holdings;

2、当k=0时,new=上一行观测中的holdings

我用了lag,语句如下:

Data a;
Set a;
if k=1 then new=holdings;
if k=0 then new=lag1(holdings);
run;

但这不对

k=1时,new=holdings可以实现;

k=0时,new的值是上一个“k=0”的观测的“holdings”的值;但如果上一行观测是"k=1",则我的要求就无法实现了。

请高手指教,谢谢。

二维码

扫码加我 拉你入群

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

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

关键词:变量值 Holdings holding hold DING 求助 变量 设置 观测

回帖推荐

hesummar 发表于2楼  查看完整内容

我给你段样例代码,我觉得你注意问题是没有搞清楚,lag函数的用法限制: Because the LAG function stores values on the queue only when it is called, you must call LAG unconditionally to get the correct answers.data a;    id='01';    k='0';    holding='123';    output;    id='02';    k='0';    hold ...

本帖被以下文库推荐

沙发
hesummar 发表于 2008-10-26 17:00:00
我给你段样例代码,我觉得你注意问题是没有搞清楚,lag函数的用法限制: Because the LAG function stores values on the queue only when it is called, you must call LAG unconditionally to get the correct answers.

data a;
    id='01';
    k='0';
    holding='123';
    output;
    id='02';
    k='0';
    holding='123';
    output;
    id='03';
    k='1';
    holding='023';
    output;
    id='04';
    k='1';
    holding='103';
    output;
    id='05';
    k='1';
    holding='923';
    output;
run;

data a;
    set a;
    temp=lag(holding);
    if k eq '1' then do;
        new=holding;
    end;
    else do;
        new=temp;
    end;
run;

已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

藤椅
lirui1980 发表于 2008-10-26 22:21:00
谢谢楼上,问题已经解决,其实就是设两个变量,new1和new2,然后再把条件代入

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

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