【问题标题】:How to read from a variable having varying character length from in-stream data in SAS?如何从 SAS 中的流内数据中读取具有不同字符长度的变量?
【发布时间】:2018-03-04 16:34:59
【问题描述】:

希望是一个简单的。 我对 SAS 很陌生。

我正在尝试使用以下 SAS 代码(如讲义中给出的)读取数据,但由于某些字符长度问题,它无法生成正确的 SAS 数据集。我试过 : and & 一些命中和试验但无法修复它。谁能解释一下我该如何解决这个问题?

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
;

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

【问题讨论】:

    标签: sas


    【解决方案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
    ;
    

    【讨论】:

    • 看起来方法(1)“dsd”和(2)“&”都有效。我认为在讲义中,空格可能被省略了,或者我认为有些奇怪,以至于它对我不起作用。无论如何感谢乔的快速帮助。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多