Sas 尾随空白
我正在尝试清理一些数据。在一个可变的“教育水平”下,我有很多关于持有硕士学位的观察。硕士学位。我将这些组织成一个价值观:使用IF-THEN语句的硕士学位。然而,我有另一个尾随空白的条目,名为Master Degree,IF-THEN语句没有使用它。我怎样才能把它剪下来 我已经研究了一些函数来处理这个问题,比如TRIM,但我不太明白如何实现这些功能,因为我是SAS的新手 这就是我一直试图整理我的数据和用于前面变量的格式的方式:Sas 尾随空白,sas,Sas,我正在尝试清理一些数据。在一个可变的“教育水平”下,我有很多关于持有硕士学位的观察。硕士学位。我将这些组织成一个价值观:使用IF-THEN语句的硕士学位。然而,我有另一个尾随空白的条目,名为Master Degree,IF-THEN语句没有使用它。我怎样才能把它剪下来 我已经研究了一些函数来处理这个问题,比如TRIM,但我不太明白如何实现这些功能,因为我是SAS的新手 这就是我一直试图整理我的数据和用于前面变量的格式的方式: data libref.name; set libref.name
data libref.name;
set libref.name;
if Var1 = "Masters" then Var1 = "Masters Degree";
if Var1 = "Master's" then Var1 = "Masters Degree";
if Var1 = "Master Degree " then Var1 = "Masters Degree";
run;
我只是想把硕士学位的观察转化为硕士学位,这不是问题,因为硕士学位和硕士学位是一样的
data _NULL_;
if "Master Degree " = "Master Degree" then put "EQUAL";
else put "DIFFERENT";
run;
将输出:
8 data _NULL_;
9 if "Master Degree " = "Master Degree" then put "EQUAL";
10 else put "DIFFERENT";
11 run;
EQUAL
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
这是因为SAS通过比较忽略任何尾随空格。这是因为当您将字符串添加到比该变量短的变量时,SAS会附加尾随空格
但是你说另一个是硕士学位,这与硕士学位不同,这不成问题,因为硕士学位和硕士学位是一样的
data _NULL_;
if "Master Degree " = "Master Degree" then put "EQUAL";
else put "DIFFERENT";
run;
将输出:
8 data _NULL_;
9 if "Master Degree " = "Master Degree" then put "EQUAL";
10 else put "DIFFERENT";
11 run;
EQUAL
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
这是因为SAS通过比较忽略任何尾随空格。这是因为当您将字符串添加到比该变量短的变量时,SAS会附加尾随空格
然而,你说另一个是硕士学位,这与硕士学位不同。如果你想转换以Master开头的所有内容,那么使用:运算符after=,它就像一个通配符
data _NULL_;
if "Master Degree " = "Master Degree" then put "EQUAL";
else put "DIFFERENT";
run;
如果Var1=:Master那么V22=Master Degree如果要转换以Master开头的所有内容,请使用:运算符after=,其工作方式类似于通配符
如果Var1=:Master然后V22=Master Degree我知道你提到过,但可能值得明确强调的是,一个硕士后面有一个s,因为他们在自己的测试中错过了它,那么他们也可能在你的答案中错过了它,甚至在以后的读者中也错过了它。我犯了一些打字错误,可能会把事情搞糊涂。当使用PROC FREQ时,硕士学位和硕士学位肯定被视为两种不同的东西,在IF语句中,相同的观察结果但带有尾随空格的观察结果不会相互识别,例如,如果高中不选择高中。最后,我使用=:一次性捕获所有类似的观察结果。在这种情况下,空间不是空间。它可以是任何不显示的字符。例如制表符'09'x,换行符'0A'x。回车“0D”x、null“00”x或不间断空格“A0”x。您是否有指向官方来源的链接,说明在比较字符串时忽略尾随空格?我已经多次看到这一事实,但似乎无法在SAS文档中找到它。我知道您已经提到了它,但可能值得明确强调的是,一个主机后面有一个s,因为他们在自己的测试中漏掉了它,所以他们也可能在你的答案中漏掉它,甚至在以后的读者中也漏掉了它。当使用PROC FREQ时,硕士学位和硕士学位肯定被视为两种不同的东西,在IF语句中,相同的观察结果但带有尾随空格的观察结果不会相互识别,例如,如果高中不选择高中。最后,我使用=:一次性捕获所有类似的观察结果。在这种情况下,空间不是空间。它可以是任何不显示的字符。例如制表符'09'x,换行符'0A'x。回车“0D”x、null“00”x或不间断空格“A0”x。您是否有指向官方来源的链接,说明在比较字符串时忽略尾随空格?我已经多次看到这一事实,但似乎无法在SAS文档中找到它。是的,这正是我最终要做的。谢谢LukeBirkett很高兴你给出了反馈,你也应该能够接受@Longfish的回答作为最好的答案。是的,这正是我最终所做的。谢谢LukeBirkett很高兴你给出了反馈,你也应该能够接受@Longfish的回答作为最佳答案。你的LIBREF指向的是外国数据库吗?像ORACLE?您的LIBREF是否指向一个外部数据库?像甲骨文?