sas中如何用WHERE语句选出需要的时间段的数据

2024-05-05 02:24

1. sas中如何用WHERE语句选出需要的时间段的数据

如果原始文本文件里面是日期格式是'05/04/2010',input语句中的输入格式就会有错误.正确的input语句:
input date mmddyy10. time $ open high low close volume amount;
format date mmddyy10.;
run;
    另一处错误:set ifa(where=(date='05/04/2010'));
在第一个数据步data dst.ifa;中,定义的数据集名为dst.ifa,在set语句中,缺省的引用数据集为work.ifa.而且语句date='05/04/2010'非法,必须将日期转换成SAS的日期格式,即data='04/MAY/2011'd;.
    更正后的程序如下:
data dst.ifa;
infile 'C:\Documents and Settings\CY\桌面\a.txt' dlm=',';
input date mmddyy10. time $ open high low close volume amount;
format date mmddyy10.;
run;
data dst.ifa;
set dst.ifa(where=(date='04/MAY/2010'd));
run;
程序中可能存在中文输入法下的标点符号,如果不能运行,可以在这方面着手检查.  最后建议将第二个数据集命名为dst.ifb,否则第二个数据步生成的数据集将覆盖原始数据集.

sas中如何用WHERE语句选出需要的时间段的数据

2. 如何使用sas筛选时间段并且求和?

data test;
   infile cards dlm=',';
   input site $ year month value;
   cards;
51701,1951,1,10,
51701,1951,2,20,
51701,1951,3,30,
51701,1951,4,40,
51701,1951,5,50,
51701,1951,6,60,
51701,1951,7,70,
51701,1951,8,80,
51701,1951,9,90,
51701,1951,10,10,
51701,1951,11,20,
51701,1951,12,30,
51701,1952,1,10,
51701,1952,2,20,
51701,1952,3,30,
51701,1952,4,40,
51701,1952,5,50,
51701,1952,6,60,
51701,1952,7,70,
51701,1952,8,80,
51701,1952,9,90,
51701,1952,10,10,
51701,1952,11,20,
51701,1952,12,30,
51701,1953,1,10,
51701,1953,2,20,
51701,1953,3,30,
51701,1953,4,40,
51701,1953,5,50,
51701,1953,6,60,
51701,1953,7,70,
51701,1953,8,80,
51701,1953,9,90,
51701,1953,10,10,
51701,1953,11,20,
51701,1953,12,30
;
run;
*第一年9月份以后到第二年3月份的数据,我理解是51年10月-52年3月,52年10月-53年3月...
*时间段位6个月,要求它们value的和,可以先求和再筛选。
*我的方法是利用lag函数,进行倒推,依次是value,lag(value),....,然后求和
*最后进行月份筛选需要的和,这里是从每年3月倒推至上一年的10月
;
data need ;
   set test;   
   val_sum = value + lag(value)+ lag2(value)
	         + lag3(value) + lag4(value) + lag5(value);
   if month = 3 then output;
run;

3. sas中日期时间型数据如何取字符串

data sun1;set sun1;format date yymmdd10.;run;

input后面给出的是变量的输入格式,但是日期的保存形式是数字,所以你看到的是数字。你要是希望看到的是日期,可用format statement对数据的format进行修改,尽管其内部保存仍然是数字。

sas中日期时间型数据如何取字符串

4. 怎样在sas数据集中选取某些数据行形成新的数据集

看你的选取条件了。
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;

5. sas从数据库导出的日期为什么不能筛选

“03mar2015”这个要换成datetime20. 这种格式的吧 或者截取registertime变成date9.格式的再比较?
if input(substr(strip(put(registertime,datetime20.)),1,9),data9.) > input('03mar2015',date9.);

这样应该可以吧……

sas从数据库导出的日期为什么不能筛选

6. 请问如何用SAS查找并读出数据

用下面的程序将excel表格导入到SAS中,
proc import  out=a1/*a1为表格1,表格2用同样的方法导入*/
datafile=" ### "
dbms=excel 2000 replace;
range="a1";
getnames=yes;
run;
用下面的程序将a2中符合a1条件的数据筛选出来就行了:
proc sql;
create table a3 as select   股票代码,收盘价 from a1,a2 where a2.股票代码=a1.股票代码;
run;
a1为表格1
a2为表格2
a3是结果

7. 在SAS程序中,如何进行数据集排序?

1、首先,打开操作页面,导入要操作的数据。

2、在数据集test中,含有学生姓名name,班级class,课程course和成绩score,现在来求出每个学生的总成绩分别是多少,代码如下。

3、如果想将结果保存到数据集里面去,则代码如下。

4、接下来来求出两个班的平均成绩分别是多少。

5、接下来来求出两个班的每一科的平均成绩分别是多少。

6、group by后面的变量就是需要进行分组的变量,可以根据自己的需要进行修改,分组汇总排序就完成了。

在SAS程序中,如何进行数据集排序?

8. 如何在sas中实现对变量的批量筛选

若干只股票的代码及其相应信息,变量为date,name,info1,info2.....,infon。
我想将其中为代码为X的所有信息提取出来,代码X存放在一个名为code的数据集中。请问各位大侠怎么实现?
我自己的想法是用set,where=实现,但是这个where语句应该怎样写?X中的代码是无规律的,没法使用逻辑表达。
谢谢大家了。
最新文章
热门文章
推荐阅读