如何从SAS中的流内数据中读取具有不同字符长度的变量?

如何从SAS中的流内数据中读取具有不同字符长度的变量?,sas,Sas,希望是一个简单的。 我是SAS的新手 我试图使用以下SAS代码读取数据(如课堂讲稿中所示),但由于某些字符长度问题,无法生成正确的SAS数据集。我试过了,也试过一些,但没能解决。谁能解释一下我该如何解决这个问题 data SMSA_subset_weather; length city $ 27; input city & JanTemp JulyTemp RelHum Rain; datalines; Akron, OH 27 71 59 36 Albany-Schenectad

希望是一个简单的。 我是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。当我使用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
;

我通过修改流内数据和使用dsd选项来实现这一点。但我想如果有更多这样的观察,我无法处理

城市名称或引号后需要第二个空格

当使用可能出现在数据中的分隔符时,您可以像使用一样使用
&
,要求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
;
看起来(1)“dsd”和(2)“和”两种方法都有效。我想在课堂讲稿中,空格可能被省略了,或者是一些奇怪的事情,我想这对我来说是行不通的。无论如何,谢谢你的快速帮助乔。非常感谢。