全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4686 8
2008-08-21

我有6年每月的数据存储在文本文件中,排列如下,每一列表示1年12个月的数据:

330.45 330.97 331.64 332.87 333.61 333.55
331.90 330.05 328.58 328.31 329.41 330.63
331.63 332.46 333.36 334.45 334.82 334.32
333.05 330.87 329.24 328.87 330.18 331.50
332.81 333.23 334.55 335.82 336.44 335.99
334.65 332.41 331.32 330.73 332.05 333.53
334.66 335.07 336.33 337.39 337.65 337.57
336.25 334.39 332.44 332.25 333.59 334.76
335.89 336.44 337.63 338.54 339.06 338.95
337.41 335.71 333.68 333.69 335.05 336.53
337.81 338.16 339.88 340.57 341.19 340.87
339.25 337.19 335.49 336.63 337.74 338.36
我该怎么样读取这些数据呢,SAS中有infile这样的语句,但是它是怎么读的呢,按行还是按列或者可以指定,我有程序如下,用print 语句打出看却没有读到数据,不知道为什么?

libname chap2'e:\work\ex2';
data chap2.ex2(label="Mauna Loa");
infile "e:\ex2.txt" firstobs=1 obs=72  ;
input co2;
time=intnx('month','01jan1975'd,_n_-1);
format time monyy.;
run;
proc print data=chap2.ex2;
run;

结果:

                                                        SAS ϵͳ                     14:12 Wednesday, March 31, 2004   1

                                                  Obs    co2    time

                                                    1     .       JAN75
                                                    2     .        FEB75
                                                    3     .       MAR75
                                                    4     .       APR75
                                                    5     .       MAY75
                                                    6     .       JUN75
                                                    7     .       JUL75
                                                    8     .       AUG75
                                                    9     .       SEP75
                                                   10     .       OCT75
                                                   11     .       NOV75
                                                   12     .       DEC75

请各位指教,多谢了!

二维码

扫码加我 拉你入群

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

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

全部回复
2008-8-21 19:52:00
data ex2(label="Mauna Loa");
infile "F:\ss.txt" firstobs=1 obs=72  ;
input co2 @@;
run;
二维码

扫码加我 拉你入群

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

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

2008-8-21 21:33:00
libname chap2'e:\work\ex2';

data chap2.ex2(label="Mauna Loa");
  infile "e:\ex2.txt";
  input co2 @@;

  yr = intnx('year','01jan75'd, mod(_N_-1,6));
  time = intnx('month', yr, (_N_-1)/6);
  format time monyy.;
  drop yr;
run;
proc print data = temp;
run;

Hope this solve your problem
二维码

扫码加我 拉你入群

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

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

2008-8-21 22:49:00
以下是引用SignPingGu在2008-8-21 21:33:00的发言:
libname chap2'e:\work\ex2';

data chap2.ex2(label="Mauna Loa");
  infile "e:\ex2.txt";
  input co2 @@;

  yr = intnx('year','01jan75'd, mod(_N_-1,6));
  time = intnx('month', yr, (_N_-1)/6);
  format time monyy.;
  drop yr;
run;
proc print data = temp;
run;

Hope this solve your problem

不行啊,按你的程序得出结果如下

                                                        SAS ϵͳ                     22:39 Wednesday, March 31, 2004   1

                                                  Obs    co2    time

                                                    1     .     JAN75
                                                    2     .     JAN76
                                                    3     .     JAN77
                                                    4     .     JAN78
                                                    5     .     JAN79
                                                    6     .     JAN80
                                                    7     .     FEB75
                                                    8     .     FEB76
                                                    9     .     FEB77
                                                   10     .     FEB78
                                                   11     .     FEB79
                                                   12     .     FEB80

我自己是这么解决的,将原来的txt文件中的从第二个数据开始数据cut下来,回车依次粘贴到第一个数据后面,把它变成一列72行的数据,然后就行了。但是我不太明白是为什么,估计是格式的问题。没有找到相关的书籍,不知道大家有什么介绍?

二维码

扫码加我 拉你入群

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

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

2008-8-21 23:16:00

   首先在文本文档的第一行给出变量名称,必须以字母开头,且非中文。

    第二步应用:

proc import datafile="f:\user\year.txt"   /*文本位置
out=year
dbms=dlm repalce;
getnames=yes;
run;

二维码

扫码加我 拉你入群

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

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

2008-8-21 23:18:00

回复:(SignPingGu)libname chap2e:workex2;dat...

多谢你了,我把数据重新处理了一下,按照你的方法的确可以了。

还有个问题,SAS是不是一定是按行取值,不能按列取(先取第一列的值,再去第二列.....)

我要把数据按照时间先后的顺序排列,是不是只能先按照你所做的那样,然后再按时间把数据重新排序?

二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群