作者Neroth (Not Exist)
看板Statistics
标题Re: [程式] SAS read in formatted data
时间Fri Sep 21 01:10:53 2018
※ 引述《AmigoSafin ()》之铭言:
: [软体程式类别]:
: 请填入软体程式类别,例如:SAS、SPSS、AMOS、R、STATA、EVIEWS...等
: SAS
: [程式问题]:
: 资料处理、回归、叙述统计、logistic、probit...等
: 资料处理
: [软体熟悉度]:
: 请把以下不需要的部份删除
: 新手
: [问题叙述]:
: 大家好,
: 遇到两个需要使用mixed format input的状况
: 希望不是我自己想得太复杂
: 以下为题目及我使用的code
: 还请大家不吝给予指点
: 谢谢大家~
: (1)
: 资料长这样:
: Bodo’s Bagels, Virginia, $100,000
: Lee’s Sandwich, Virginia, $37,500
: 我的code:
: DATA SASweek1.industry;
: INFILE "&Dirdata.Assignment1_Q6_data.txt" DLM="," DSD termstr=crlf MISSOVER;
: LENGTH Company $ 15;
: INPUT Company State $ Expense :COMMA8.;
: RUN;
: (2)
: 资料如下:
: McDonald,15:02:00,Washington DC,$20,000.00
: J. Imgo,13:48:00,Virginia,$1,000.09
: 我的code:
: DATA SASweek1.award;
: INFILE "&dirdata.Award_1.txt" DLM="," DSD termstr=crlf;
: INPUT Name $ Time1 Location $ Prize ;
: INFORMAT Name $ 8. Time1 time10. Prize COMMA10.2;
: FORMAT Time1 time8.1 Prize DOLLAR10.2;
: RUN;
: 第二个时间没有print 出来
: Prize也不对
: 而且只有第一列 不知道哪里该做修正
: 第一个也是只有印出第一列
: 觉得应该要用mixed formatted input
: 但总是很容易乱掉
: 应该是观念还不够清楚
: 还请大家多多指教
: 谢谢了~~
大致调整了一下,
第一题把100,000改成1,000,000来测试
所以code长这样:
%let newd=E:\Workspace\SAS\SASClass\Data;
%let filein =test_data.txt;
data industry;
infile "&newd\&filein" dlm=',' dsd truncover;
length
Company $ 15
State $ 9;
input
Company
State
Expense dollar12.;
run;
proc print data=industry;
run;
因为是货币, 所以把comma改成用dollar来取
第二题的code:
%let newd=E:\Workspace\SAS\SASClass\Data;
%let filein =test_data2.txt;
data award;
infile "&newd\&filein" delimiter=',' dsd truncover;
length
Name $ 8
Location $ 13;
input
Name
Time1:time8.
Location
Prize dollar15.2;
run;
proc print data=award;
format Time1:time8. Prize dollar15.2;
run;
dollar我都放长一点来测试, 不过所有的观测值都有跑出来
参考看看
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.148.104
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1537463458.A.A3D.html