Trouble pulling data from a messy ACII file...
On Wed, 17 Dec 2008, Titan8883 wrote:
Hi all, I am a new graduate student who is also new to R. I am ok with the basics, but the problem I am having right now seems beyond what I can do..so I am looking for advice.
Advice? OK. Here goes. I would suggest you pull one of the data files into a character vector using readLines().
From there you can try out different methods of finding the data elements
in the file that you want to extract. If it is guaranteed that 'nominal
pulse width' ALWAYS shows up on the same line in every file, you can use
the line numbers to figure out where to look for data elements. If not,
you will probably want to get familiar with grep() and regular
expressions, see ?regex and use RSiteSearch("regexpr") and the like to
turn up the many useful discussions of them on this list.
From there sub(), gsub(), strsplit(), and friends will help you. They may
take a good deal of fiddling to get them to digest your data. If parts of your file can be read using read.csv() or scan() or something, you can use a textConnection() to pass some lines that readLines() has stored for you to read.csv(). Once you get so that one data file can be processed, rolling up your code as a function should not be too hard. Put the function in a loop using res <- list() for(ifile in your.file.list ) res[[ifile]] <- your.function( ifile) or res <- sapply(your.file.list, your.function) or res <- lapply(your.file.list, your.function) and you are ready to chomp away at your files. HTH, Chuck I am trying to pull data from flat ASCII files, but they
do not have a "nice" structure so a simple "read.table" doesn't work. An example first half of a data file is below: ---------------------------------------------------------------------------------------------- 19 c:/data/WF-100/2008/20080911/trk/20080911.013115.007.17.txt 10 s name of program that wrote this file trkplt name of program that wrote this file 10 GORDON machine that generated this file machine that generated this file 10 3.7 version of program 10 3.6 version of this data file 10 5.81 version of Universal Library 10 20081121.145730 when this file was written 10 Windows_XP operating system used operating system used * * radar characteristics 11 WF-100 11 20000000 A/D rate, samples/second 11 7.5 bin width, m 11 800 nominal PRF, Hz 11 0.25 nominal pulse width, microsec 11 0 tuning, volts 11 3.19779 nominal wave length, cm ----------------------------------------------------------------------------------------------- ..the file goes on from there... How would I go about getting this data into some kind of useful format? This is one of about 1000 files I will need to go through. I would ideally like to get these into a format with each data file as a row with columns for the various values with the description text removed(version of program, file version, tuning volts, etc...). I'm not looking for a cut and paste answer, but perhaps some direction on where I should start. I have only done basic .csv, table, and line inputs up until now. Thanks for any advice -- View this message in context: http://www.nabble.com/Trouble-pulling-data-from-a-messy-ACII-file...-tp21059239p21059239.html Sent from the R help mailing list archive at Nabble.com.
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Charles C. Berry (858) 534-2098
Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901