There is no option to end at the next-to-last line. I am working on modifying the code I gave you yet another time, but I have been occupied with my own research today.
-
Login or Register
- Log in with
global location ~/Downloads/2files/ cd "$location" clear save out.dta, replace emptyok tempfile lines capture frame drop files frame create files frame files { filelist, pattern(*_out.txt) directory("$location") norecursive local nfiles = c(N) list in 1/2 } forvalues i = 1/`nfiles' { frame files: local file = dirname[`i']+filename[`i'] local file : subinstr local file ".txt" "" display "file `i': `file' quietly { infix str line 1-100 using "`file'.txt", clear drop in l replace line = trim(substr(line,2,.)) outfile using "`lines'", noquote replace import delimited "`lines'", delimiter(whitespace, collapse) varnames(1) clear save "`file'.dta", replace append using out.dta save out.dta, replace } } frame drop files describe
. global location ~/Downloads/2files/ . . cd "$location" /Users/lisowskiw/Downloads/2files . clear . save out.dta, replace emptyok (dataset contains 0 observations) file out.dta saved . . tempfile lines . . capture frame drop files . frame create files . frame files { . filelist, pattern(*_out.txt) directory("$location") norecursive Number of files found = 2 . local nfiles = c(N) . list in 1/2 +-------------------------------------------------------------------+ | dirname filename fsize | |-------------------------------------------------------------------| 1. | ~/Downloads/2files/ 579_33.51330265_73.90576445_out.txt 1,034 | 2. | ~/Downloads/2files/ 580_33.514591_73.75728486_out.txt 1,034 | +-------------------------------------------------------------------+ . } . . forvalues i = 1/`nfiles' { 2. frame files: local file = dirname[`i']+filename[`i'] 3. local file : subinstr local file ".txt" "" 4. display "file `i': `file' 5. quietly { 6. infix str line 1-100 using "`file'.txt", clear 7. drop in l 8. replace line = trim(substr(line,2,.)) 9. outfile using "`lines'", noquote replace 10. import delimited "`lines'", delimiter(whitespace, collapse) varnames(1) clear 11. save "`file'.dta", replace 12. append using out.dta 13. save out.dta, replace 14. } 15. } file 1: ~/Downloads/2files/579_33.51330265_73.90576445_out file 2: ~/Downloads/2files/580_33.514591_73.75728486_out . . frame drop files . describe Contains data from out.dta Observations: 48 Variables: 4 13 Dec 2022 18:14 ------------------------------------------------------------------------------------------------ Variable Storage Display Value name type format label Variable label ------------------------------------------------------------------------------------------------ date str9 %9s lon float %9.0g lat float %9.0g value float %9.0g ------------------------------------------------------------------------------------------------ Sorted by: .
global location ~/Downloads/2filesv2/ cd "$location" clear save out.dta, replace emptyok tempfile lines capture frame drop files frame create files frame files { filelist, pattern(*_out.txt) directory("$location") norecursive local nfiles = c(N) list in 1/2 } forvalues i = 1/`nfiles' { frame files: local file = dirname[`i']+filename[`i'] local file : subinstr local file ".txt" "" display "file `i': `file' quietly { infix str line 1-200 using "`file'.txt", clear drop in l replace line = substr(line,2,.) in 1 replace line = trim(line) outfile using "`lines'", noquote replace list in 1/2 import delimited "`lines'", delimiter(whitespace, collapse) varnames(1) clear asdouble save "`file'.dta", replace append using out.dta save out.dta, replace } } frame drop files describe format lat lon %16.8f list lat lon in 1, clean
. global location ~/Downloads/2filesv2/ . . cd "$location" /Users/lisowskiw/Downloads/2filesv2 . clear . save out.dta, replace emptyok (dataset contains 0 observations) file out.dta saved . . tempfile lines . . capture frame drop files . frame create files . frame files { . filelist, pattern(*_out.txt) directory("$location") norecursive Number of files found = 2 . local nfiles = c(N) . list in 1/2 +------------------------------------------------------------------------+ | dirname filename fsize | |------------------------------------------------------------------------| 1. | ~/Downloads/2filesv2/ 1_2003_36.44991823_72.57155787_out.txt 6,244 | 2. | ~/Downloads/2filesv2/ 1_2004_36.44991823_72.57155787_out.txt 6,240 | +------------------------------------------------------------------------+ . } . . forvalues i = 1/`nfiles' { 2. frame files: local file = dirname[`i']+filename[`i'] 3. local file : subinstr local file ".txt" "" 4. display "file `i': `file' 5. quietly { 6. infix str line 1-200 using "`file'.txt", clear 7. drop in l 8. replace line = substr(line,2,.) in 1 9. replace line = trim(line) 10. outfile using "`lines'", noquote replace 11. list in 1/2 12. import delimited "`lines'", delimiter(whitespace, collapse) varnames(1) clear asdou > ble 13. save "`file'.dta", replace 14. append using out.dta 15. save out.dta, replace 16. } 17. } file 1: ~/Downloads/2filesv2/1_2003_36.44991823_72.57155787_out file 2: ~/Downloads/2filesv2/1_2004_36.44991823_72.57155787_out . . frame drop files . describe Contains data from out.dta Observations: 142 Variables: 12 15 Dec 2022 14:20 ------------------------------------------------------------------------------------------------ Variable Storage Display Value name type format label Variable label ------------------------------------------------------------------------------------------------ date str10 %10s time str8 %9s year int %8.0g month byte %8.0g day byte %8.0g x double %10.0g y double %10.0g lon double %10.0g lat double %10.0g lev byte %8.0g name str4 %9s value double %10.0g ------------------------------------------------------------------------------------------------ Sorted by: . format lat lon %16.8f . list lat lon in 1, clean lat lon 1. 36.44991823 72.57155787 .
Note however that filelist is written in Mata and unfortunately the dir() function can only return 10,000 filenames from a single directory.
forvalues i = 1/70 { forvalues j = 2003/2020 { filelist , pattern(`i'_`j'_*_out.txt) directory("$location") norecursive ... } }
Comment