【问题标题】:I want to compute a variable in SPSS with "if"我想用“if”在 SPSS 中计算一个变量
【发布时间】:2015-02-09 12:11:58
【问题描述】:

我想创建最后一列。在此先感谢您!

【问题讨论】:

    标签: spss calculated-columns


    【解决方案1】:

    你可以试试这样的:

    /*************************************/.
    DATA LIST FREE /v1 v2 v3 v4 v5.
    BEGIN DATA
    1 2 99 4 5
    99 2 3 99 5
    1 99 3 4 5
    1 2 99 99 5
    1 99 99 99 5
    99 2 99 99 99
    END DATA.
    DATASET NAME DS1.
    /*************************************/.
    /* Solution1: Assumes v1 to v5 can hold any value from 1 to 5 */.
    recode v1 to v5 (99,sysmis=sysmis) (else=copy).
    do repeat v=v1 to v5.
    if (any(v,1,4,5)) Target1=1.
    if (any(v,2,3)) Target2=2.
    end repeat.
    compute TargetA=sum(Target1,Target2).
    
    /* Solution2: Alternative solution which assumes v1 holds values 1 only v2 values 2 only ect... */. 
    recode v1 to v5 (99,sysmis=sysmis) (else=1).
    compute TargetB=sum(any(1,v1,v4,v5)*1, any(1,v2,v3)*2).
    exe.
    

    【讨论】:

      【解决方案2】:

      如果我理解正确的话:

      • 您的输入文件包含 5 列,每个通道 1 列
      • 每个特定于通道的列都填充有特定于通道的标识符 (1-5)
      • 当该列为空时,该通道未使用/与该观察无关
      • 您想汇总新字段中使用的通道组合 (NewVar) 您想在 SPSS 语法中使用 IF 语句

      JigneshSutar 上面的答案似乎没有这样做。此外,您不需要 do-repeat-loops,但可以在 3 行 (+EXECUTE.) 语法中执行此操作(使用 JigneshSutar 答案中的数据生成器):

      IF (V1 = 1 & V4 = 4 & V5 = 5)  NewVar = 1.
      IF (V2 = 2 & V3 = 3)  NewVar = 2.
      IF (V1 = 1 & V2 = 2 & V3 = 3 & V4 = 4 & V5 = 5)  NewVar = 3.
      EXECUTE.
      

      当通道列填充了通道标识符 [1-5] 以外的其他值时,可以轻松调整此语法,例如使用缺少的函数:

      IF (MISSING(V1)=0 & MISSING(V4)=0 & MISSING(V5)=0)  NewVar = 1.
      IF (MISSING(V2)=0 & MISSING(V3)=0)  NewVar = 2.
      IF (MISSING(V1)=0 & MISSING(V2)=0 & MISSING(V3)=0& MISSING(V4)=0 & MISSING(V5)=0)  NewVar = 3.
      EXECUTE.
      

      【讨论】:

      • 我发布的第一个/初始解决方案假设 Var1 到 Var5 可以保持 1-5 之间的 any 值,尽管给出的示例数据可能表明并非如此。否则,解决方案将是直接使用 IF 逻辑。如果数据按照您的假设存储,那么这是非常糟糕的数据表示,应该重新编码,我更新我的帖子以提出解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多