楼主: ihsihs
4741 8

外部文本数据文件创建SAS数据集的问题 [推广有奖]

  • 1关注
  • 1粉丝

博士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
612 个
通用积分
7.5219
学术水平
6 点
热心指数
6 点
信用等级
1 点
经验
2918 点
帖子
127
精华
0
在线时间
306 小时
注册时间
2008-6-18
最后登录
2024-5-16

楼主
ihsihs 发表于 2008-8-21 14:16:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

我有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

请各位指教,多谢了!

二维码

扫码加我 拉你入群

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

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

关键词:sas数据集 文本数据 数据文件 数据集 libname SAS 文本 数据集 数据文件

回帖推荐

SignPingGu 发表于3楼  查看完整内容

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

本帖被以下文库推荐

离2200还有多远

沙发
angel42102209 发表于 2008-8-21 19:52:00
data ex2(label="Mauna Loa");
infile "F:\ss.txt" firstobs=1 obs=72  ;
input co2 @@;
run;

藤椅
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
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

板凳
ihsihs 发表于 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行的数据,然后就行了。但是我不太明白是为什么,估计是格式的问题。没有找到相关的书籍,不知道大家有什么介绍?

离2200还有多远

报纸
sparklem65 发表于 2008-8-21 23:16:00

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

    第二步应用:

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

地板
ihsihs 发表于 2008-8-21 23:18:00

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

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

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

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

离2200还有多远

7
SignPingGu 发表于 2008-8-22 03:49:00
You are right.

Proc sort data = temp;
  By time;
Run;

There is a little typo in my code:

proc print data = chap2.ex2;
run;

8
birdnick 发表于 2008-8-22 16:44:00
哈哈,学习啦

9
ihsihs 发表于 2008-8-22 21:17:00

回复:(SignPingGu)You are right.Proc sort data =...



There is a little typo in my code:

proc print data = chap2.ex2;
run;

I found  it when I run the program.

thank you for your kind help!

离2200还有多远

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

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