防止自动创建变量标签的正斜杠

2024-10-02 00:25:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我对此做了很多研究,还没有找到一个明确的解决方案。我用SPSS语法比用python好得多,所以请耐心听我说

我有一个SPSS数据集,其中有大量的变量被重新编码成不同的形式,我正在尝试清理语法,我几乎做到了

数据集来自一个excel文件,该文件的列标题是完整的变量标签,因此当SPSS导入数据集时,未编辑的版本会停留在我想要的变量标签字段中;换句话说,我没有在任何时候明确定义变量标签

在我重新编码变量之后,我需要复制原始的变量标签并在开头加上“Recoded:”。我试图避免在所有重新编码的变量上显式定义数百行变量标签

我遇到的问题是其中一个标签包含正斜杠,使用下面示例中的语法会导致在语法中将斜杠视为退出字符,并且包含斜杠的标签只部分复制到重新编码的变量

data list /var001 1 var002 5.
begin data
3   4
4   5
2   3
5   5
end data.
variable labels
var001 "Variable label that contains apostrophes' but not forward slashes"
/var002 "Variable label that contains apostrophes' and/or forward slashes".
RECODE var001 var002 (1 thru 3 = 0) (4 thru 5 = 1) INTO var001_r var002_r.
EXECUTE.

begin program.
variables='var001 to var002'
import spss, spssaux, spssdata
spss.Submit("set mprint on.")
vdict=spssaux.VariableDict(caseless=True)
varlist=spssaux.VariableDict().expand(variables)
for var in varlist:
    vlab = vdict[var].VariableLabel
    spss.Submit("VARIABLE LABEL %s." % ("\n" .join([r"%s_r ""Recode: %s"" " % (str(var), vlab)])))
spss.Submit("set mprint off.")
end program.

Tags: 文件数据编码data定义var语法标签
1条回答
网友
1楼 · 发布于 2024-10-02 00:25:04

实际上不需要python。 以下语法使用OMS捕获var名称;来自dictionary命令的标签,并使用它们编写创建新标签的新语法:

dataset name orig.
DATASET DECLARE  vrlst.
OMS   /SELECT TABLES  /IF COMMANDS=['File Information'] SUBTYPES=['Variable Information']
  /DESTINATION FORMAT=SAV  OUTFILE='vrlst' .
DISPLAY DICTIONARY.
omsend.
dataset activate vrlst.
select if Label<>"<none>".
string cmd (a100).
compute cmd=concat("var labels ", rtrim(var1), '_r  "recoded: ', Label, '".'). 
write out="path\recode labels.sps" /cmd. 
dataset activate orig.
insert file="path\recode labels.sps".

相关问题 更多 >

    热门问题