SPSS 22:循环遍历4000个文本文件并从中解析数据

时间:2014-10-07 13:37:23

标签: spss

不幸的是,Stata确实不承认UTF8 / Unicode。幸运的是,SPSS 22确实如此!我正在尝试使用+/- 4000 .txt文件中的奇怪字符来解析包含变量的特定行。到目前为止,我只使用以下代码只用1个.txt文件来完成它:

* First, get the text files.
GET DATA  /TYPE=TXT 
/FILE="\my\path\20001_friends.txt" 
/ENCODING='UTF8' 
/DELCASE=LINE 
/DELIMITERS=" " 
/ARRANGEMENT=DELIMITED 
/FIRSTCASE=1 
/IMPORTCASE=ALL 
/VARIABLES= 
V1 A2082 
V2 A2118 
V3 A27 
V4 A36 
V5 A113 
V6 A54 
V7 A49 
V8 A47 
V9 A78 
V10 A109 
V11 A33 
V12 A15 
V13 A81 
V14 A4 
V15 A21 
V16 A7. 
CACHE. 
EXECUTE. 
DATASET NAME DataSet1 WINDOW=FRONT.

* Second, compute conditional upon Vriend = 1.
COMPUTE x = 0.
IF (V5 = "Vriend") x = 1.
COMPUTE y = 1.
EXECUTE.

* Third, get every observation after Vriend.
IF y ~= lag(x) z = 0.
IF y = lag(x) z = 1.
EXECUTE.

* Fourth, select only the names.
SELECT IF z = 1.
EXECUTE.

我想为+/- 4000个文件执行此操作,并以从此文本文件中解析的所有行的附加列表结束(同时删除其余行)。此外,文本文件从20001_names.txt到36872_names.txt,因此不是每个标识符都可用。例如,20002_names.txt可能丢失,而20003_names.txt可能存在。我还想构造一个变量,指示行来自哪个标识符(例如,对于从第一个文件解析的所有行,id = 20001)。

1 个答案:

答案 0 :(得分:1)

最佳解决方案是使用SPSSINC PROCESS FILES扩展命令迭代4000个文件。在每次传递中,您可以将结果与迄今为止的数据合并。输入列表可以是通配符,例如c:\ myfiles * .txt。无需枚举所有文件。在每次迭代中,您可以使用JOB_INPUTFILE文件句柄引用来打开当前文件。

此命令需要Python Essentials。有关详细信息,请访问SPSS社区(www.ibm.com/developerworks/spssdevcentral)网站。 Essentials是免费的,但安装过程因版本而异。

如果您有Statistics V22,您可能已经拥有Essentials,只需从Utilities>中安装PROCESS FILES即可。 Extension Bundles菜单。