首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在跳过空格时循环计算相邻值的总和

在跳过空格时循环计算相邻值的总和
EN

Stack Overflow用户
提问于 2020-05-18 17:09:05
回答 1查看 32关注 0票数 1

我有一个情绪反应的时间序列,我想从这些反应之间的绝对差异总和中计算一个变量。例如,我有10个变量表示T1-T10的悲伤强度。然而,一些参与者缺少一些数据,因为一些参与者只回答了T1-5或T1-8。因此,我对每个参与者的回复数量各不相同。

现在我想从这些变量之间的绝对差之和计算一个新的变量(SAD_s) (T1s是T1的悲伤强度,T2s是T2的悲伤强度,依此类推):

代码语言:javascript
复制
COMPUTE SAD_s=abs(T2s-T1s)+abs(T3s-T2s) + abs(T4s-T3s) +abs(T5s-T4s)+abs(T6s-T5s) + abs(T7s-T6s) +abs(T8s-T7s)+abs(T9s-T8s) + abs(T10s-T9s) .
EXECUTE.

然而,这只适用于具有最大可能响应的参与者。对于其他所有缺少数据的人,我没有得到任何价值。

对于在时间序列末尾有缺失数据的参与者(例如,T7之后的缺失值,但在此之前有完整的数据),我如何才能使其工作?原则上,我也希望为参与者提供一个介于两者之间的缺失值的解决方案(例如,T1-T7完成,T8丢失,T9-T10完成),但我会优先考虑前者。

我还有一个变量,表示Ts参与者响应的数量。我有一个模糊的想法,我需要使用一个循环,这个循环重复这个变量指示的次数,但我不知道如何实现它。

EN

回答 1

Stack Overflow用户

发布于 2020-05-18 18:13:01

如果您只想跳过缺少的值,并仍然计算所有相邻有效值对之间的差异,您可以这样做:

代码语言:javascript
复制
compute #lstvr=T1.
compute sad_s=0.
do repeat vr=T2 to T10.
  if not missing(vr) and not missing (#lstvr) sad_s=sad_s+abs(vr-#lstvr).
  if not missing(vr) #lstvr=vr.
end repeat.

如果,正如我从你的评论中理解的那样,如果你不想比较一个缺失值的两边的值,只需像这样修改循环中的第二行:

代码语言:javascript
复制
compute #lstvr=vr. /* instead of "if not missing(vr) #lstvr=vr."
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61866129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档