首页 > 解决方案 > 当数据线有变量空格时如何定义输入变量

问题描述

我想在同一个数据集中有两个不同的字符串。我试图用“”分隔 valeus,但它没有用。想象一下我不想写“”,但里面只有字符串。我搜索了很多,但没有找到任何相关的东西。你们能帮我实现目标吗?

data ecl.dim_produtos;
   input id_produt id_departament id_order id_business id_portfolio initials $4. long_name $40. short_name $30.;
   datalines;
    1 1 10201 4 1 PZC "Puzzle Crédito" "Puzzle Crédito" 
    2 1 10202 4 1 PZR "Puzzle Reestruturados" "Reestruturados"
    3 2 10207 30 1 DBO "Banca Online" "Banca Online"
    4 3 10210 60 1 CLB "Colaboradores" "Colaboradores"
    5 1 10203 4 1 PZF "Puzzle Formação" "Code Academy"
    6 4 10205 5 1 HIP "Hipoteca Inversa" "Hip. Inversa"
    7 5 10206 25 1 EMP "DEMP" "DEMP"
    8 6 10208 45 1 NCO "NewCo" "NewCo"
    9 6 10211 70 1 LDRC "Lendrock" "Lendrock"
    10 4 10209 50 1 OTI "Otima Provision" "Otima"
    11 6 10001 1 1 LDC "Lendico" "Lendico"
    12 6 10007 1 1 MIBL "Market Invoice BL - EUR" "Market Invoice BL"
    13 6 10003 1 1 CRS "CreditShelf" "CreditShelf"
    14 6 10005 1 1 FUN "Funding Circle" "Funding Circle"
    15 6 10002 1 1 RAI "Raize" "Raize"
    16 4 10204 5 1 FLX "Flex" "Flex"
    17 6 10101 2 1 AUX "Auxmoney" "Auxmoney"
    18 6 10009 2 1 UPG "Upgrade - EUR" "Upgrade"
    19 6 10104 2 1 PRO "Prodigy Finance" "Prodigy"
    20 6 10102 2 1 FEL "Fellow Finance" "Fellow"
    21 6 10008 1 1 ASZ "Assetz - EUR" "Assetz"
    22 6 10010 2 1 LDB "Lendable - EUR" "Lendable"
    23 6 10004 1 1 LIN "Linked Finance" "Linked"
    24 6 10103 2 1 LDR "Lendrock" "Lendrock"
    25 6 10105 3 1 EDX "Edebex" "Edebex"
    26 6 10006 1 1 CAM "Camomille - FC" "Camomille"
    27 6 10106 3 1 MIN "Market Invoice - EUR" "Market Invoice"
    90 0 99991 102 2 DIV "Dívida Pública - EUR" "Dívida Pública"
    91 6 99992 103 2 CRP "Obrigações Corporate - EUR" "Obrigações Corporate"
    92 0 99990 101 3 SDA "Disp. Aplicações OIC - EUR" "Disp. Aplicações OIC"
    9999 0 999999 999 99 TOT "Total Patrimonial - EUR" "Total Patrimonial"
;
run;

标签: inputsasdataset

解决方案


:如果要在 INPUT 语句中包含信息规范以避免在列表和格式化输入模式之间切换,请首先确保使用修饰符。

如果您可以确保值之间至少有两个空格(并且值本身没有相邻的空格),则可以使用&修饰符。

data test;
   input id_produt id_departament id_order id_business id_portfolio
         initials &:$4. long_name &:$40. short_name &:$30. 
   ;
datalines;
1 1 10201 4 1 PZC  Puzzle Crédito  Puzzle Crédito 
2 1 10202 4 1 PZR  Puzzle Reestruturados  Reestruturados
;

或者保留引号并确保每个值之间恰好有一个空格(并且不要缩进数据行!)并添加 DSD 选项。

data test;
   infile datalines dsd dlm=' ' truncover ;
   input id_produt id_departament id_order id_business id_portfolio
         initials :$4. long_name :$40. short_name :$30. 
   ;
datalines;
1 1 10201 4 1 PZC "Puzzle Crédito" "Puzzle Crédito"
2 1 10202 4 1 PZR "Puzzle Reestruturados" "Reestruturados"
;

或者使用不同的分隔符,带或不带 DSD 选项。

data test;
   infile datalines dsd dlm='|' truncover ;
   input id_produt id_departament id_order id_business id_portfolio
         initials :$4. long_name :$40. short_name :$30. 
   ;
datalines;
1|1|10201|4|1|PZC|Puzzle Crédito|Puzzle Crédito
2|1|10202|4|1|PZR|Puzzle Reestruturados|Reestruturados
;

推荐阅读