之前學(xué)習(xí)了@
作為列指針在輸入時(shí)發(fā)揮定位作用,@
符號如果放在input
語句的變量名后面也會(huì)發(fā)揮不同的作用。
其中片排,雙尾@@
和單位@
修飾符是比較常用的兩種情況朵诫。
雙尾@@
實(shí)現(xiàn)從每行原始數(shù)據(jù)讀取多個(gè)觀測
在input
語句結(jié)尾處使用雙尾@符號(@@)
辛友,就像停車標(biāo)志一樣,表示拗窃,“停下瞎领,留在原始數(shù)據(jù)的當(dāng)前行”。
SAS將停留在那行數(shù)據(jù)随夸,繼續(xù)讀取數(shù)據(jù)直到數(shù)據(jù)讀完或者沒有雙尾@@
符號的input
語句九默。
來看書中的一個(gè)例子:
data rain;
input city $ state $ normalrain meandayrain @@;
cards;
Nome city 2.5 15 Miami FL 6.75
18 Raleigh NC . 12
;
run;
proc print data =rain noobs ;
title "Rain";
run;
打印結(jié)果如下:
city | state | normalrain | meandayrain |
---|---|---|---|
Nome | city | 2.50 | 15 |
Miami | FL | 6.75 | 18 |
Raleigh | NC | . | 12 |
單位@
讀取原始數(shù)據(jù)的一部分
當(dāng)無需讀取全部的數(shù)據(jù),而是只讀取部分?jǐn)?shù)據(jù)時(shí)宾毒。
- 通過只讀取需要的變量以確定是否保留當(dāng)前的觀測驼修,然后用一個(gè)
@
符號結(jié)束input
語句。
- 該符號告知SAS保留那行原始數(shù)據(jù)诈铛,然后可以使用
IF
語句來測試該觀測乙各,以確定是否是要保存的觀測。
- 如果是幢竹,可以使用第二條
input
語句為其余變量讀取數(shù)據(jù)耳峦。
通過例子進(jìn)行理解:
data freeways;
input type $ @;
if type = 'surface' then delete;
input name $ PM $ AM $;
cards;
surface 606 1435 1677
freeway 705 1435 1677
surface 701 1435 1677
freeway 602 1435 1677
freeway 503 1435 1677
freeway 708 1435 1677
;
run;
proc print data = freeways noobs; title "Freeways" ; run;
上面的程序中,先input
變量type
焕毫,然后if
語句進(jìn)行判斷type
蹲坷。
如果是surface
那么刪除,只保留高速公路freeway
的數(shù)據(jù)邑飒。
打印結(jié)果如下:
type | name | PM | AM |
---|---|---|---|
freeway | 705 | 1435 | 1677 |
freeway | 602 | 1435 | 1677 |
freeway | 503 | 1435 | 1677 |
freeway | 708 | 1435 | 1677 |