sas - SAS 扫描功能分隔符无法正常工作
问题描述
我在 sas 中遇到了扫描功能的问题。
我拥有的数据集包含一个需要拆分为多个变量的变量。
变量的结构如下:
4__J04__1__SCH175__BE__compositeur/arrangeur__compositeur/bewerker__(空白)__1__17__108.03__93.7
我使用此代码将其拆分为多个变量:
data /*ULB.*/work.smart_BCSS_withNISS_&JJ.&K.;
set work.smart_BCSS_withNISS_&JJ.&K.;
/* Maand splitsen in variablen */
mois=scan(smart,1,"__");
jours=scan(smart,2,"__");
nbjours=scan(smart,3,"__");
refClient=scan(smart,4,"__");
paysPrestation=scan(smart,5,"__");
wordingFR=scan(smart,6,"__");
wordingNL=scan(smart,7,"__");
fonction=scan(smart,8,"__");
ARTISTIQUE2=scan(smart,9,"__");
Art_At_LEAST=scan(smart,10,"__");
totalBrut=scan(smart,11,"__");
totalImposable=scan(smart,12,"__");
run;
大多数情况下,这可以完美运行。然而,有时第 4 个变量 'refClient' 包含一个下划线,如下所示:
4__J04__1__LE_46__BE__compositeur/arrangeur__compositeur/bewerker__(空白)__1__17__108.03__93.7
不知何故,即使分隔符是双下划线,扫描功能也会将此单个下划线检测为分隔符。
关于如何避免这种行为的任何想法?
解决方案
Aurieli 的代码有效,但他们的回答没有解释原因。您对工作原理的理解scan
是不正确的。
- 如果为 指定的分隔符中有超过 1 个字符,则
scan
每个字符都被视为一个分隔符。你已经指定_
了两次。如果您已指定ab
thena
并且b
两者都将被视为定界符,而不是ab
定界符。 scan
默认情况下,将多个连续的定界符视为一个定界符,这就是您的代码同时将__
和_
视为定界符的原因。因此,如果您指定ab
为分隔符字符串 thenba
等abba
也将默认计为单个分隔符。
推荐阅读
- python - 将数据集拆分为两个非冗余 numpy 数组?
- amazon-web-services - 如何在 Cloudformation Fn::Sub 中的 UserData 中添加两个变量
- java - 如何让 Scala 和 Java 与 Visual Studio Code 一起工作?
- python - 用于网络搜索历史的 GUI
- python - 如何通过 Python API 使用 Google Drive v3 API 来限制编辑者共享电子表格?
- jquery - 如何将以前上传的文件添加到新文件 - jQuery
- excel - 我需要显示一个消息框,上面写着“请选择最多 8 个数据”。当用户在工作表中选择超过 8 个单元格时
- android - Google Api 错误:permissionDeclarationRequiresUpdate
- c++ - 运算符重载+动态矩阵
- angular - 为什么组合的可观察对象在使用主题时不更新模板,或者它们在 ngAfterContentInit 之后发出