【问题标题】:SPSS REPEAT: How do i use the stand-in-variable as part of variable name?SPSS REPEAT:如何使用替代变量作为变量名的一部分?
【发布时间】:2015-08-03 09:27:31
【问题描述】:

我正在使用 SPSS 20。 在我的数据集中是一个字符串变量列表,我想将其重新编码为数字。最初我希望它们被重新编码成它们自己。 我意识到这是不可能的,因为 SPSS 逐个遍历数据集,并且一个变量一次只能有一种类型。 所以我希望将它们重新编码为新变量,但后缀为_rec

DO REPEAT var = var_1 var_2 ... var_n.
  RECODE var (CONVERT) INTO var_rec.
END REPEAT. 

但这只会创建一个新变量var_rec,而不是几个新变量。

我还尝试编写一个解决方法:

COMPUTE Job_2
STRING Job(A20)
    DO REPEAT var = var_1 var_2 ... var_n.
COMPUTE var = Job. 
RECODE Job (CONVERT) INTO Job_2.
DELETE VARIABLES var.
COMPUTE var = Job_2.  
END REPEAT. 

但这不起作用,因为DELETE VARIABLES 不能在DO REPEAT 循环中使用。

所以我回到我原来的问题。

【问题讨论】:

    标签: string spss recode


    【解决方案1】:

    你说它们(字符串变量)不能被重新编码成它们自己,但它们可以使用ALTER TYPE

    ALTER TYPE var_1 var_2 var_3 (F8.2). 
    

    其中 F8.2 是宽度为 8 和 2 个小数点的数值变量。

    您可以将DO REPEAT 与多个替代变量列表一起使用,如下所示:

    DO REPEAT Old = var_1 var_2 var_3
        /New = var1_rec var2_rec var3_rec.
      RECODE Old (CONVERT) INTO New.
    END REPEAT PRINT. 
    

    展开后相当于:

    RECODE var_1 (CONVERT) into var1_rec.
    RECODE var_2 (CONVERT) into var2_rec.
    RECODE var_3 (CONVERT) into var3_rec.
    

    但如果您要这样做,那么您可以直接在 RECODE 命令中执行此操作,如下所示:

    RECODE var_1 var_2 var_3 (CONVERT) INTO var1_rec var2_rec var3_rec.
    

    这两种方法都假定原始变量都是字符串变量(具有任何不同的宽度)。

    注意CONVERT function 的作用,即获取一个字符串变量(包含存储为字符串的数值)并将其转换为数值格式变量。所以输入变量总是一个字符串,输出数字。

    【讨论】:

    • 对于您的第一个建议:SPSS 不会遍历每个变量列表,从而将 var_1、var_2 和 va3_3 重新编码为 var_1_rec(例如)?最后只有 var_3 会被重新编码。对于您的第二个建议:为了做到这一点,RECODE 需要所有变量具有相同的类型和宽度。
    • 更新帖子以提供帮助。
    • 非常感谢。我不知道 DO REPEAT 是这样工作的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 2018-09-22
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    相关资源
    最近更新 更多