楼主: vickyannie
3438 10

关于选取variables [推广有奖]

  • 0关注
  • 0粉丝

小学生

92%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
45 点
帖子
6
精华
0
在线时间
14 小时
注册时间
2012-1-9
最后登录
2012-10-23

楼主
vickyannie 发表于 2012-1-11 23:21:55 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我是SAS初学者,有个很基础的问题,我的csv表格有43个variable,但我不想全部选取来做计算,我只想选其中的几个,应该如何做呢?而且我的obs有87万行,我只想挑选其中符合ID要求的行,就是说要obs和variable交叉选取data。

不知道大家有没有明白我的意思,我对obs选取用的是if语句,if ID = 'XXX', 但后边我不明白是不是需要then。
variable是一堆的价格price,43个,但我想选取5个。

谢谢
二维码

扫码加我 拉你入群

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

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

关键词:Variables Variable ABLE ABL VaR 初学者 price 而且 如何

沙发
layyine 发表于 2012-1-12 00:47:02
选取obs用where吧?var可以用keep么?其实我也很菜,不知道对不对

藤椅
xiaoyu163 发表于 2012-1-12 09:18:27
不知道这样是不是lz需要的:

data want;
set have;
keep var1 var2 var3 var4 var5;
if id=‘xxx’;
run;

板凳
vickyannie 发表于 2012-1-12 09:18:38
layyine 发表于 2012-1-12 00:47
选取obs用where吧?var可以用keep么?其实我也很菜,不知道对不对
proc print data = trading;
where InstrumentID='a1111';
var TradingDay InstrumentID $ UpdateTime AveragePrice ClosePrice;
run;

但报错:

ERROR: Variable TRADINGDAY not found.
ERROR: Variable INSTRUMENTID not found.
ERROR: Variable UPDATETIME not found.
ERROR: Variable AVERAGEPRICE not found.
ERROR: Variable CLOSEPRICE not found.
ERROR 22-322: Syntax error, expecting one of the following: a name, ;, -, /, :, _ALL_,
              _CHARACTER_, _CHAR_, _NUMERIC_.
ERROR 200-322: The symbol is not recognized and will be ignored.

是不是我需要指明每个variable中的data占多少空间呢?

报纸
vickyannie 发表于 2012-1-12 10:03:37
xiaoyu163 发表于 2012-1-12 09:18
不知道这样是不是lz需要的:

data want;
要设置每个variable的长度吗?

地板
layyine 发表于 2012-1-12 13:00:45
vickyannie 发表于 2012-1-12 09:18
proc print data = trading;
where InstrumentID='a1111';
var TradingDay InstrumentID $ UpdateTime  ...
新建一个data set,试试下面这个程序行不行

data tradingselected;
   set trading(keep=TradingDay InstrumentID UpdateTime.......);
where InstrumentID='a1111';
run;

7
vickyannie 发表于 2012-1-12 15:30:15
layyine 发表于 2012-1-12 13:00
新建一个data set,试试下面这个程序行不行

data tradingselected;
我是这样做的

data book2;
infile 'E:\sas\book2.csv' delimiter=',' dsd;
input TradingDay        InstrumentID $        UpdateTime $        UpdateMillisec        LastPrice        Volume        OpenPrice        OpenInterest        PreSettlementPrice        PreClosePrice        PreOpenInterest        HighestPrice        LowestPrice        UpperLimitPrice        LowerLimitPrice        BidPrice1        BidVolume1        AskPrice1        AskVolume1        BidPrice2        BidVolume2        AskPrice2        AskVolume2        BidPrice3        BidVolume3        AskPrice3        AskVolume3        BidPrice4        BidVolume4        AskPrice4        AskVolume4        BidPrice5        BidVolume5        AskPrice5        AskVolume5        AveragePrice        ExchangeID        ExchangeInstID        Turnover        ClosePrice        SettlementPrice        PreDelta        CurrDelta;
run;
proc print data = book2;
where InstrumentID='a1111';
var TradingDay  InstrumentID   UpdateTime  AveragePrice  ClosePrice ;
run;

但有个问题,我的原始表格是15万行,但读的结果是output没有显示,log里提示的是0 obs read,然后删减表格只有10行,就读出来了,我想知道这跟file的大小有关吗?

谢谢

8
layyine 发表于 2012-1-12 22:21:46
vickyannie 发表于 2012-1-12 15:30
我是这样做的

data book2;
我还木有做过这么多数据的表格呢...不知道啊..

你修改到10行之后用你现在的程序就可以了吗?之前的报错没有了?

9
layyine 发表于 2012-1-12 22:34:20
我拿了个sasuser里的小data试了一下,6楼和7楼的程序都OK的,不知道为什么15万行就不行了。。

10
vickyannie 发表于 2012-1-13 00:23:52
layyine 发表于 2012-1-12 22:34
我拿了个sasuser里的小data试了一下,6楼和7楼的程序都OK的,不知道为什么15万行就不行了。。
现在可以了,问题出在原始csv文件我分割之后没有了逗号,不知道怎么没的,然后SAS就无法识别各个数据了。还有个问题,怎样连接SQL server来读取数据库呢,我刚才搜索了一下论坛,没有特别合适我这种basic的。
谢谢

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

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