楼主: ReneeBK
2540 3

[问答] Delete variables width more than 500? [推广有奖]

  • 1关注
  • 62粉丝

VIP

已卖:4897份资源

学术权威

14%

还不是VIP/贵宾

-

TA的文库  其他...

R资源总汇

Panel Data Analysis

Experimental Design

威望
1
论坛币
49635 个
通用积分
55.6937
学术水平
370 点
热心指数
273 点
信用等级
335 点
经验
57805 点
帖子
4005
精华
21
在线时间
582 小时
注册时间
2005-5-8
最后登录
2023-11-26

楼主
ReneeBK 发表于 2014-6-6 22:49:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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!

二维码

扫码加我 拉你入群

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

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

关键词:Variables Variable delete ABLE Than helpful across

本帖被以下文库推荐

沙发
ReneeBK 发表于 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.

藤椅
ReneeBK 发表于 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.

板凳
ReneeBK 发表于 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.

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 05:01