Sas 尾随空白

Sas 尾随空白,sas,Sas,我正在尝试清理一些数据。在一个可变的“教育水平”下,我有很多关于持有硕士学位的观察。硕士学位。我将这些组织成一个价值观:使用IF-THEN语句的硕士学位。然而,我有另一个尾随空白的条目,名为Master Degree,IF-THEN语句没有使用它。我怎样才能把它剪下来 我已经研究了一些函数来处理这个问题,比如TRIM,但我不太明白如何实现这些功能,因为我是SAS的新手 这就是我一直试图整理我的数据和用于前面变量的格式的方式: data libref.name; set libref.name

我正在尝试清理一些数据。在一个可变的“教育水平”下,我有很多关于持有硕士学位的观察。硕士学位。我将这些组织成一个价值观:使用IF-THEN语句的硕士学位。然而,我有另一个尾随空白的条目,名为Master Degree,IF-THEN语句没有使用它。我怎样才能把它剪下来

我已经研究了一些函数来处理这个问题,比如TRIM,但我不太明白如何实现这些功能,因为我是SAS的新手

这就是我一直试图整理我的数据和用于前面变量的格式的方式:

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是否指向一个外部数据库?像甲骨文?