删除值标签的SPSS(Deleting Value Labels in SPSS)

2019-10-23 10:54发布

我从进口猴子的调查数据到SPSS和调查猴子自动分配值和值标签。 我的价值观和标签目前是这样的:

1 “已婚” 2 “单” 3 “777” 4 “999”

我重新编码变量,使得3 = 777和4 = 999。 然后,我设置777和999失踪。 然后我用ADD值标签添加777 =“拒绝” 999 =“不知道”。 如何使用语法来删除该值和值标签3和4? 这些都不再是真实的,因为我重新编码值3和4。我知道我可以使用值标签删除我的所有值和标签,但我不得不指定我的所有类别这将是乏味的。 理想我想重新编码的3倍4的值,增加值的标签新777点999的值并删除旧的3和4。如果我只有几个变量,我会考虑做一个不同的方式,但我想写语法,我可以用约100变量列表。 我还将每周从调查猴子提取数据,并希望有语法文件重命名,重新编码,并添加值标签准备好每个我拉的数据的时候了。

Answer 1:

我不相信有一种方法来删除,只为特定值的特定值标签。 因此,解决方法是将整组值的显式设置的值:

DATA LIST FREE / MS.
BEGIN DATA
1 2 3 4
END DATA.

/* 1. Original values labels */.
VALUE LABELS MS 1 "Sinlge" 2 "Married" 3 "777" 4 "999".
CTABLES /TABLE MS[C].

/* 2. Recode values and re-label - Note values 3 and 4 are still assigned values but they happen to be blank as they are being registered by CTABLES */.
RECODE MS (3=777) (4=999).
ADD VALUE LABELS MS 3 "" 4 "" 777 "Refused" 999 "Unknown".
CTABLES /TABLE MS[C].

/* 3. Workaround is to assign explicitly entire set of values */.
VALUE LABELS MS 1 "Sinlge" 2 "Married" 777 "Refused" 999 "Unknown".
CTABLES /TABLE MS[C].

更新:

那么,什么是计算的领域是不可能的。 雷纳德Levesque的勾勒出解决方法解决方案在这里 。 和鲁本·海尔特范登贝尔赫提供了一个Python的解决方案的网站也。



Answer 2:

这是可以用SPSS语法内蟒开始,结束程序块做:

DATA LIST FREE / MS (F1.0).
BEGIN DATA
END DATA.

VALUE LABELS MS 1 "Married" 2 "Single" 3 "777" 4 "999".
ADD VALUE LABELS MS 777 "Refused" 999 "Don't know".

BEGIN PROGRAM.
import spss

qst='MS'
values=[3,4]
with spss.DataStep():
    datasetObj=spss.Dataset();varObj = datasetObj.varlist[qst];valObj=varObj.valueLabels
    print 'Before:',valObj
    for i in values: 
        try:
            del valObj[i]
        except:
            continue   
    print 'After:',valObj
END PROGRAM.

输出日志:

Before: {1.0: 'Married', 2.0: 'Single', 3.0: '777', 4.0: '999', 999.0: "Don't know", 777.0: 'Refused'} 
After: {1.0: 'Married', 2.0: 'Single', 777.0: 'Refused', 999.0: "Don't know"}


文章来源: Deleting Value Labels in SPSS
标签: spss