zoukankan      html  css  js  c++  java
  • SAS拆分数据集

    2012年8月8日
    主要是根据选取条件来进行拆分
    1、根据行数来选:
    data test;
    set oldset;
    if _n_=10 then output;
    if id="001" then output;
    run;
    输出第10行的数据行和ID="001"的数据行并形成数据集test;
    2、用where语句
    3、用firstobs和obs的组合来截取一部分数据行
    data test;
    set oldset(firstobs=10 obs=1000);
    run;
    
    4、Select 语句 (课本中方法)
    
    data c9501m c9501f;
    

    set c9501;

    select(sex);

    when ('男') output c9501m;

    when ('女') output c9501f;

    otherwise put sex='有错';

    end;

    drop sex;

    run;

    proc print data=9501m;run;

    proc print data=9501f;run;

    一个具体例子 (转自:人大经济论坛)

    现有2.78G的csv格式数据

    其中var1是形如“20110829”的字符串,有1999~2012的数据

    需要按年把数据拆分开,分别保存,以便接下来的处理。

    求程序代码


    在论坛网友的帮助下,问题基本解决了,以下是我自己的代码:
    data cd;
    infile 'D:fdatacust_done.csv'
    DLM = ','
    DSD
    missover
    firstobs=2;
    input date$ exch$ id variety$ del$ price$ vol$ short$ tb$ close$ fee method$ time$ 
    pervol force$;
    run;

    proc print data=cd (obs = 10);
    run;
    data cd1;
    set cd;
    year=substr(date,1,4);
    run;
    data  cd1999 cd2000 cd2001 cd2002 cd2003 cd2004 cd2005 cd2006 cd2007 cd2008 cd2009 
    cd2010 cd2011 cd2012;
    set cd1;
    select(year);
    when ('1999') output cd1999;
    when ('2000') output cd2000;
    when ('2001') output cd2001;
    when ('2002') output cd2002;
    when ('2003') output cd2003;
    when ('2004') output cd2004;
    when ('2005') output cd2005;
    when ('2006') output cd2006;
    when ('2007') output cd2007;
    when ('2008') output cd2008;
    when ('2009') output cd2009;
    when ('2010') output cd2010;
    when ('2011') output cd2011;
    when ('2012') output cd2012;
    end;
    run;

     
  • 相关阅读:
    设计模式之观察者模式
    设计模式之装饰器模式
    redis.conf常用配置说明
    log4j日志框架的使用
    Redis入门简述
    Linux用户组权限简单解析
    MyBatis入门简述
    初学Linux要掌握的命令
    SpringIOC原理简述
    Java单元测试神器之Mockito
  • 原文地址:https://www.cnblogs.com/zhangleisanshi/p/5168764.html
Copyright © 2011-2022 走看看