希望是一个简单的。 我对SAS很新。
我正在尝试使用以下SAS代码读取数据(根据讲义中给出的),但由于某些字符长度问题,它没有生成正确的SAS数据集。我试过了:和&一些打击和审判,但无法解决它。任何人都可以向我解释我如何解决这个问题?
data SMSA_subset_weather;
length city $ 27;
input city & JanTemp JulyTemp RelHum Rain;
datalines;
Akron, OH 27 71 59 36
Albany-Schenectady-Troy, NY 23 72 57 35
Baltimore, MD 35 77 55 43
Allentown, Bethlehem, PA-NJ 29 74 54 44
Atlanta, GA 45 79 56 47
;
run
;
我正在使用SAS ON DEMAND。当我使用dsd时它会给我所需的输出,如下所示:
data SMSA_subset_weather;
infile datalines delimiter=" " dsd;
length city $ 27;
input city & JanTemp JulyTemp RelHum Rain;
datalines;
"Akron, OH" 27 71 59 36
"Albany-Schenectady-Troy, NY" 23 72 57 35
"Baltimore, MD" 35 77 55 43
"Allentown, Bethlehem, PA-NJ" 29 74 54 44
"Atlanta, GA" 45 79 56 47
;
run
;
答案 0 :(得分:1)
您需要在城市名称或引号后面加第二个空格。
使用可能出现在数据中的分隔符时,您可以像使用&
那样请求SAS读取,直到找到两个连续的分隔符。 (您也可以使用DSD
选项和引号。)
所以这里:
data SMSA_subset_weather;
length city $ 27;
input city & JanTemp JulyTemp RelHum Rain;
datalines;
Akron, OH 27 71 59 36
Albany-Schenectady-Troy, NY 23 72 57 35
Baltimore, MD 35 77 55 43
Allentown, Bethlehem, PA-NJ 29 74 54 44
Atlanta, GA 45 79 56 47
;
run
;
或者在这里,使用带引号的DSD:
data SMSA_subset_weather;
length city $ 27;
infile datalines dsd dlm=' ';
input city JanTemp JulyTemp RelHum Rain;
datalines;
"Akron, OH" 27 71 59 36
"Albany-Schenectady-Troy, NY" 23 72 57 35
"Baltimore, MD" 35 77 55 43
"Allentown, Bethlehem, PA-NJ" 29 74 54 44
"Atlanta, GA" 45 79 56 47
;
run
;