2014-10-07 98 views
1

不幸的是,Stata確實無法識別UTF8/Unicode。幸運的是,SPSS 22呢!我試圖解析包含具有超出+/- 4000 .txt文件的奇怪字符的變量的特定行。到目前爲止,我只設法用下面的代碼只有1 .txt文件做到這一點:SPSS 22:循環瀏覽4000個文本文件並解析其中的數據

* 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

最好的解決方案是使用SPSSINC PROCESS FILES擴展命令遍歷4000個文件。在每次通過時,您可以將結果與迄今爲止的數據進行合併。輸入列表可以是通配符,如c:\ myfiles * .txt。無需枚舉所有文件。在每次迭代中,您可以使用JOB_INPUTFILE文件句柄引用來打開當前文件。

該命令需要Python Essentials。有關詳細信息,請參閱SPSS社區(www.ibm.com/developerworks/spssdevcentral)網站。 Essentials是免費的,但安裝過程因版本而異。

如果你有統計V22,你可能已經有Essentials,只需從Utilities> Extension Bundles菜單中安裝PROCESS FILES即可。