全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SPSS论坛
2478 3
2014-06-06
Question:  I am looking for a syntax to delete variables which have width more than 500.  I came across the syntax dict1 =spssaux.VariableDict(variableType='string'). I am not sure if it will be helpful. It'll be great if anyone could help me with this! Thanks!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-6-6 22:50:38
DATA LIST FREE / X1 X2 (2F1.0) A1 (A501) A2 (A600).
BEGIN DATA
1 1 A B
1 1 C D
END DATA.


begin program.
import spss, spssaux
vardict = spssaux.VariableDict(variableType="string")
verylong = [v.VariableName for v in vardict if v.VariableType > 500]

longstr =  [v.VariableType for v in vardict if v.VariableType > 500]
#Grabbing string length

spss.StartProcedure("Over500")
table = spss.BasePivotTable("String Vars Over 500", "COMMON")
table.SetDefaultFormatSpec(spss.FormatSpec.Count)
table.SimplePivotTable(rowdim = "Variable",
     rowlabels=verylong,
     collabels=["Length"],
     cells=longstr)
spss.EndProcedure()

#if verylong:

#    spss.Submit("delete variables " + " ".join(verylong))
end program.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-6-6 22:51:18
begin program.
import spss, spssaux

vardict = spssaux.VariableDict(variableType="string")
verylong = [v.VariableName for v in vardict if v.VariableType > 500]
if verylong:
    spss.Submit("delete variables " + " ".join(verylong))
end program.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-6-6 22:52:17
Another sneaky way to do this as well (without Python) is to use ALTER TYPE  and SORT VARIABLES (although these were introduced as of V16 - so they won't  work going back really far).

What this syntax does is to change any variable of length 501 to 502 (which seems like a reasonable concession to me), then creates a variable to note the start of the string, this allows one to then sort the file and then drop all variables between the two variables you created.

**********************************.
ALTER TYPE ALL (A501 = A502).
STRING @Holder (A501).
SORT VARIABLES BY TYPE.
NUMERIC Temp.
DISPLAY DICTIONARY /VARIABLES = @Holder to Temp.
MATCH FILES FILE = * /DROP @Holder TO Temp.
**********************************.

If the ordering of the variables is important to keep you can use the VARIABLE ATTRIBUTE command - although that is not convenient like the Python solution.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群