我想在SPSS中使用&#34计算变量;如果"

时间:2015-02-09 12:11:59

标签: spss calculated-columns

enter image description here

我想创建最后一栏。提前谢谢你!

2 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情:

/*************************************/.
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.

答案 1 :(得分:0)

如果我理解正确的话:

  • 您的输入文件包含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.