【问题标题】:Converting some values in a variable from minutes to hours while keeping the rest the same将变量中的某些值从几分钟转换为几小时,同时保持其余值不变
【发布时间】:2021-08-03 10:33:58
【问题描述】:

在一份问卷中,我询问了人们通常每晚睡多长时间。现在回复应该是 h.mm 格式,但不小心被设置为 h。这就是为什么一些参与者以分钟为单位给出他们的睡眠时间,或者简单地写“830”8小时30分钟。现在我想纠正这两种变化并首先尝试:


RECODE Sleep (1=1) (2=2) (3=3) (4=4) (5=5) (6=6) (7=7) (8=8) (9=9) (10=10)(11=11)(12=12)(13=13)(14=14)(801 thru 899 = 8.5) (701 thru 799 = 7.5)(200 thru 600 = (Sleep/60))
 INTO Sleep_rek.

RECODE Sleep_rek(LOWEST thru 4.5 = 0) (5, 6= 1) (6.5 thru 7 = 2) (7.5 thru HIGHEST=3)
  INTO PSQI_K3_SleepDuration.


Execute. 

由于它不起作用并且我认为 Recode 可能无法做到这一点,所以我尝试了这个:


RECODE Sleep (1=1) (2=2) (3=3) (4=4) (5=5) (6=6) (7=7) (8=8) (9=9) (10=10)(11=11)(12=12)(13=13)(14=14)(801 thru 899 = 8.5) (701 thru 799 = 7.5)
 INTO Sleep_rek.

IF (Sleep = (300 thru 600) & Sleep_rek = sysmis) Sleep_rek = (Sleep/60).


RECODE Sleep_rek(LOWEST thru 4.5 = 0) (5, 6= 1) (6.5 thru 7 = 2) (7.5 thru HIGHEST=3)
  INTO PSQI_K3_SleepDuration.


Execute. 

但是这也引发了错误:

代码不完整,检查是否缺少操作符,无效操作符, 括号不匹配或字符串太长。

最终计算了 PSQI_K3_SleepDuration 变量,但任何具有 300 到 600 值的人仍然是缺失值。

谁能告诉我怎么放它才能工作?

【问题讨论】:

    标签: spss recode


    【解决方案1】:

    我可以看到您的语法中有一些错误 - 在您纠正它们后看看它是否有效。

    1. 确实,recode .... (200 thru 600 = (Sleep/60))不行,不能用计算作为目标值。

    2. recode ... (5, 6= 1) 应该改为 (5 6= 1)(不需要逗号)。

    3. IF (Sleep = (300 thru 600) & Sleep_rek = sysmis) Sleep_rek = (Sleep/60) 有几个错误:thru 是重新编码的子命令,不能这样使用,也不能这样使用“sysmis”。更正版本:

      IF (Sleep>= 300 and Sleep

    4. 您上次重新编码的语法很好,但您使用的范围似乎是错误的 - 因为您要将数字从 300 到 600 除以 60,所以您只会得到值 5 到 10 的分数。然而recode 涵盖 4.5 以下数字中的分数,但不涵盖 5 到 7.5 之间的值(特定值除外:5、6、6.5、7)。

    【讨论】:

    • 感谢您的快速而有帮助的回复。第三点确实有效并解决了问题。至于四个是的,你当然是对的,我还没考虑转换的时候就写了,忽略了……谢谢指出!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多