2016-08-24 28 views
1

使用包含混合数据的SPSS电子表格。一列按行包含不同的数字条目。我写了一个简单的宏,具有以下行为。如何转换检查号码以检查信件和号码的SPSS宏?

  1. 检查列的给定数字条目的每一行。
  2. 然后创建一个新列,并且如果输入数字是行中它被分配一个1。如果不是它被分配0

的代码如下:

DEFINE INCHECK (!POSITIONAL !TOKENS(1) 
/!POSITIONAL !CMDEND) 

NUMERIC !1. 
COUNT !1=IN1 TO IN15 (!2). 
IF !1 GT 0 
!1=1. 
!ENDDEFINE 

问题如下。我现在有一个新的数据集,其中有一个额外的列,例如“E1567,G4345等”。我想调整宏,使其能够与这种不同类型的条目具有相同的行为。我虽然关于转换条目,但我不确定如何在SPSS中完成此项。有什么想法吗?

+0

提到这个问题之前,我可以提出一个普遍改善到宏观。这可以取代宏内容:'计算!1 =任何(!2,IN1到IN15)。“ –

回答

0

从你的例子中,我明白你的新文本变量是由一个字母,然后是几个数字。如果这是在所有情况下是一致的(如果不是,请举些例子),你可以在去之前使用相同的宏中使用这种简单的换算:

compute YourTextVar=char.substr(YourTextVar,2,20). 
alter type YourTextVar(f20). 
+0

嘿Eli,我对没有更具体的道歉表示歉意。这段代码的行为似乎是这样的,就像你推断出一个字母后跟一个数字一样,变量从一个字符串转换为一个数字。我想要的是INCHECK将原来的字符串识别出来,而不是将其转换为数字。那有意义吗? – George

+0

我想我真的不明白这个问题--IN1到IN15列之一是现在的文本,你要查找的值有时可能是一个数字,有时是一个字符串? 也 - 你需要宏来调整新的文件与意想不到的数字和文本变量的名称,只是这个新的特定数据集? –