【问题标题】:Change All Value Labels to Numerics in SPSS在 SPSS 中将所有值标签更改为数字
【发布时间】:2016-09-05 14:16:27
【问题描述】:

我需要将我的 spss 文件中所有变量的所有值标签更改为值本身。

我第一次尝试- 值标签全部。 执行。

这会删除值标签,但也会完全删除值。我需要这个有某种标签,因为我正在转换文件,当没有定义值时,它会将值转换为数字。因此,我需要将所有值标签更改为数字,以便每个值的标签只是值 - value = 1 然后 label = 1。

有什么想法可以在我的所有变量中执行此操作吗??

提前致谢!!

【问题讨论】:

  • 可以使用 python,但我看不出在什么情况下这会是有益的?如果您想先详细说明这是否确实是您想要做的?
  • 我正在将我的 .SAV 文件转换为 MDD/DDF 格式。元素标识符以全文作为名称(有点笨拙)出现,所以我希望元素名称为 1 到任何值。在我转换文件后,删除 SPSS 中的值会导致变量类型更改为数字而不是分类。所以,我认为解决这个问题的所有变量的最佳方法是将值标签更改为实际值
  • 我对您提到的文件格式 (MDD/DDF) 了解不多/一无所知,但是您是否尝试将 VARIABLE LEVEL 分配从 SCALE 更改为 NOMINAL。为所有必要的变量执行此操作比为所有变量/值设置值标签要容易得多。
  • 是的,不幸的是,一旦删除了所有值,这似乎没有任何区别。删除所有值后,该变量实际上保持名义上的状态。听起来好像没有一种简单的方法可以更改所有值标签!
  • 如果使用 python 很容易做到...

标签: label spss programmatically-created


【解决方案1】:

以下是帮助您入门的解决方案:

get file="C:\Program Files\IBM\SPSS\Statistics\23\Samples\English\Employee data.sav".
begin program.
import spss, spssaux, spssdata
spss.Submit("set mprint on.")
vd=spssaux.VariableDict(variableType ="numeric")
for v in vd:
    allvalues = list(set(item[0] for item in spssdata.Spssdata(v.VariableName, names=False).fetchall()))
    if allvalues:
        cmd="value labels " + v.VariableName + "\n".join(["  %(i)s '%(i)s'" %locals() for i in allvalues if i <> None]) + "."
        spss.Submit(cmd)
spss.Submit("set mprint off.")
end program.

您可能需要阅读 this 以了解 fetchall 在阅读 date 变量时的行为(或者,如果日期变量没有引起问题,也可以将它们的值排除在标签之外?)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2021-12-26
    • 1970-01-01
    • 2013-06-23
    • 2017-05-25
    相关资源
    最近更新 更多