楼主: flyloop
3498 10

通过已有数据集扩增观测的方法,本人菜鸟,请有兴趣的同学帮忙 [推广有奖]

  • 6关注
  • 0粉丝

博士生

17%

还不是VIP/贵宾

-

威望
0
论坛币
723 个
通用积分
2.4000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
867 点
帖子
89
精华
0
在线时间
392 小时
注册时间
2013-4-7
最后登录
2024-6-14

楼主
flyloop 发表于 2013-6-22 18:29:43 |AI写论文
30论坛币
各位SAS大牛,本人sas初学,有个数据集扩增的问题还有请解答,具体数据集如下:
原数据集:
data test;
input id$ n a e;
cards;
001 3 4 0
002 5 3 1
;
run;
想变成
data v;
input id$ n a e;
cards;
001 3 4 0
001 2 4 0
001 1 4 0
002 5 3 1
002 4 3 0
002 3 3 0
002 2 3 0
002 1 3 0
;
run;

第一列是ID号,n是整数,如果n=多少就生存多少条相同的观测,并且e=0;a就是利用其原先数据集中的值,不知大家有没有明白我的意思。

最佳答案

playmore 查看完整内容

data test; input id$ n a e; cards; 001 3 4 0 002 5 3 1 ; run; data result; set test; output; do until(n=1); n=n-1; e=0; output; end; run;
关键词:数据集 cards Input Data card

回帖推荐

本帖被以下文库推荐

沙发
playmore 发表于 2013-6-22 18:29:44
data test;
input id$ n a e;
cards;
001 3 4 0
002 5 3 1
;
run;

data result;
        set test;
        output;
        do until(n=1);
                n=n-1;
                e=0;
                output;
        end;
run;
       
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

藤椅
flyloop 发表于 2013-6-22 18:32:31
在线等答案中!!!

板凳
flyloop 发表于 2013-6-22 20:48:42
非常感谢您的热情帮助

报纸
flyloop 发表于 2013-6-23 01:09:35
playmore 发表于 2013-6-22 18:29
data test;
input id$ n a e;
cards;
大侠,你的程序我碰到一个问题,我的真实数据,有600多观测,跑这段程序速度好慢,并且提示我关掉一些程序,最后10分钟左右后log提示ERROR: Insufficient space in file VV.A1.DATA。不知有解决办法没有?谢了

地板
playmore 发表于 2013-6-23 14:22:03
flyloop 发表于 2013-6-23 01:09
大侠,你的程序我碰到一个问题,我的真实数据,有600多观测,跑这段程序速度好慢,并且提示我关掉一些程序 ...
你电脑得有多旧啊,600多观测就不行了?
就算由一条观测再生出100条,也不会占多少空间
我平时上百万条的也没事
SAS运行时数据全都存硬盘
你这里肯定是电脑的问题
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

7
flyloop 发表于 2013-6-23 16:43:45
playmore 发表于 2013-6-23 14:22
你电脑得有多旧啊,600多观测就不行了?
就算由一条观测再生出100条,也不会占多少空间
我平时上百万条 ...
真的,大侠,肯定是我哪个地方设置的不对,我电脑里居然在D 盘(sas安装盘)和E盘产生了一个60G的数据集,还打不开,硬盘全部沾满了。

8
老师她摸我 发表于 2013-6-23 22:05:35
  1. data v;
  2.         if _n_=1 then do;
  3.                 if 0 then set test;
  4.                 declare hash h(dataset:'test');
  5.                 h.definekey('id','n');
  6.                 h.definedata(all:'y');
  7.                 h.definedone();
  8.         end;
  9.         set test;
  10.         do n=n to 1 by -1;
  11.                 if h.find() ne 0 then do;
  12.                         a=a;
  13.                         e=0;        
  14.                 end;
  15.                 output;
  16.         end;
  17. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
playmore + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

欢迎加入SAS群:144839730-蜗牛

9
flyloop 发表于 2013-6-23 23:31:08
老师她摸我 发表于 2013-6-23 22:05
感谢你的帮助,我的数据集略大,如果变量a是泛指很多变量,我的意思是还需要一个个变量写a=a,有没有简单点的方法呢.

10
老师她摸我 发表于 2013-6-24 13:12:46
flyloop 发表于 2013-6-23 23:31
感谢你的帮助,我的数据集略大,如果变量a是泛指很多变量,我的意思是还需要一个个变量写a=a,有没有简单点的 ...
  1. a=a;
复制代码
改成
  1. h.add();
复制代码
就好。
欢迎加入SAS群:144839730-蜗牛

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-6 05:01