gpt4 book ai didi

python - 正斜杠阻止自动创建变量标签

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:03 25 4
gpt4 key购买 nike

我已经对此进行了大量搜索,但还没有提出明确的解决方案。我对 SPSS 语法的掌握比对 Python 的掌握要好得多,所以请多多包涵。

我有一个 SPSS 数据集,其中包含大量变量,这些变量被重新编码为不同的形式,我正在尝试清理语法,我快完成了。

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

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

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

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.

最佳答案

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

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".

关于python - 正斜杠阻止自动创建变量标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53303219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com