楼主: tsdy
6215 15

[原创博文] SAS 循环求助 [推广有奖]

  • 2关注
  • 1粉丝

本科生

16%

还不是VIP/贵宾

-

威望
0
论坛币
48 个
通用积分
1.5000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
10501 点
帖子
43
精华
0
在线时间
91 小时
注册时间
2009-5-26
最后登录
2023-12-25

楼主
tsdy 发表于 2010-12-20 18:10:06 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位,有个程序不知应该怎么写,请大家帮忙?我有一个数据data1,其中包括2个变量x1、x2。我想生成新的数据集data2,其中根据data1中x1的变量生成对应的若个条记录。比如数据集data1为

            x1           x2
50.2
40.25
30.333333



我要生成数据集data2,其中,新生成变量x3。如data1中变量x1第一条记录为5,则x3为5个x2,即0.2,0.2,0.2,0.2,0.2。如此类推。如下


     x1     x3
50.2
50.2
50.2
50.2
50.2
40.25
40.25
40.25
40.25
30.333333
30.333333
30.333333


由于x1较多,所以不知道该怎样写这个程序。希望大家帮忙!
二维码

扫码加我 拉你入群

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

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

关键词:Data 变量生成 生成变量 数据集 不知道 程序 记录

回帖推荐

elek.me 发表于2楼  查看完整内容

本帖被以下文库推荐

沙发
elek.me 发表于 2010-12-20 22:19:39
  1. data have;
  2.         input x1 x2;
  3. cards;
  4. 5        0.2
  5. 4        0.25
  6. 3        0.333333
  7. ;

  8. data want(drop=i rename=(x2=x3));
  9.         set have;
  10.         do i=1 to x1;
  11.                 output;
  12.         end;
  13. run;
复制代码
已有 1 人评分论坛币 学术水平 收起 理由
论坛数据分析 + 100 + 2 精彩帖子

总评分: 论坛币 + 100  学术水平 + 2   查看全部评分

我的博客: http://elek.me/sas
联系我: http://about.me/elek

藤椅
tiantianfrm 发表于 2010-12-20 22:58:15
data data2
set  data1;
do while(n lt a);
n+1;output;
end;
run;

板凳
tsdy 发表于 2010-12-20 23:01:54
好像不行啊!

515  data x3(drop=i rename=(x2=x3));
516   set x2;
517   do i=1 to x1;
518    output;
519   end;
520  run;
NOTE: 变量 x1 未初始化。
WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 x2。
ERROR: 无效的 DO 循环控制信息,INITIAL 或 TO 表达式缺失,或 BY 表达式缺失、为 0 或无效。
y=4 c=0.25 i=1 x1=. _ERROR_=1 _N_=1
NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: 从数据集 WORK.X2 读取了 1 个观测。
WARNING: 数据集 WORK.X3 可能不完整。该步停止时,共有 0 个观测和 3 个变量。
WARNING: 数据集 WORK.X3 由于该步已停止,而没有被替换。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.32 秒
      CPU 时间         0.04 秒


2# elek.me

报纸
眼睛花 发表于 2010-12-20 23:15:20
4# tsdy

楼主elek.me的程序是对的,只不过少了Run而已
修改成
data have;
        input x1 x2;
cards;
5        0.2
4        0.25
3        0.333333
;
Run;
data want(drop=i rename=(x2=x3));
        set have;
        do i=1 to x1;
                output;
        end;
run;

地板
tsdy 发表于 2010-12-20 23:16:57
好像也不行啊!

528  data x3;
529   set x2;
530   do while(n lt x1);
531   n+1;
532   output;
533   end;
534   run;
NOTE: 变量 x1 未初始化。
NOTE: 从数据集 WORK.X2 读取了 468 个观测。
NOTE: 数据集 WORK.X3 有 0 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.03 秒
      CPU 时间         0.03 秒

3# tiantianfrm

7
elek.me 发表于 2010-12-20 23:18:18
5# 眼睛花
data步里,不用run;是没有问题的。
我的博客: http://elek.me/sas
联系我: http://about.me/elek

8
elek.me 发表于 2010-12-20 23:19:30
楼主啊,请确认你成功运行了data have;这个data步
我的博客: http://elek.me/sas
联系我: http://about.me/elek

9
tsdy 发表于 2010-12-20 23:22:26
谢谢了!

运行了!正在往我的数据里套!

8# elek.me

10
tsdy 发表于 2010-12-20 23:29:26
8# elek.me

再请教一下。如果DATA1已经建立好了,怎么我只写后边的DATA WANT步时,为什么就提示上面的错误啊?

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

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