[R] Reading text file with fortran format

Steven Yen syen04 at gmail.com
Wed Oct 1 00:22:37 CEST 2014


Thanks to all.
Steven Yen

At 06:18 PM 9/30/2014, Nordlund, Dan (DSHS/RDA) wrote:
> > -----Original Message-----
> > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> > project.org] On Behalf Of Steven Yen
> > Sent: Tuesday, September 30, 2014 2:04 PM
> > To: r-help
> > Subject: [R] Reading text file with fortran format
> >
> > Hello
> >
> > I read data with fortran format:
> > mydata<-read.fortran('foo.txt',
> >                       c("4F10.4","F8.3","3F3.0","20F2.0"))
> > colnames(mydata)<-c("q1","q2","q3","q4","income","hhsize",
> >   "weekend","dietk","quart1","quart2","quart3","male","age35",
> >   "age50","age65","midwest","south","west","nonmetro",
> >   "suburb","black","asian","other","hispan","hhtype1",
> >   "hhtype2","hhtype3","emp_stat")
> > dstat(mydata,digits=6)
> >
> > I produced the following sample statistics for the first 4
> > variables (q1,q2,q3,q4):
> >
> >               Mean  Std.dev Min       Max  Obs
> > q1       0.000923 0.002509   0  0.035245 5649
> > q2       0.000698 0.001681   0  0.038330 5649
> > q3       0.000766 0.002138   0  0.040100 5649
> > q4       0.000373 0.001140   0  0.026374 5649
> >
> > The correct sample statistics are:
> > Variable|       Mean       Std.Dev.     Minimum      Maximum
> > --------+----------------------------------------------------
> >        Q1|     9.227632     25.09311          0.0     352.4508
> >        Q2|     6.983078     16.80984          0.0     383.2995
> >        Q3|     7.657381     21.38337          0.0     400.9950
> >        Q4|     3.727952     11.40446          0.0     263.7398
> >    INCOME|     16.01603     13.70296          0.0        100.0
> >    HHSIZE|     2.586475     1.464282          1.0         16.0
> >
> > In other words, values for q1-q4 were scaled down by a factor of
> > 10,000.
> > My raw data look like (with proper format)
> >
> >      0.0000    0.0000    0.0000    0.0000  48.108...
> >      0.0000    0.0000    0.0000    0.0000  11.640...
> >     35.3450    0.0000   95.7656    0.0000   4.667...
> >      0.0000    0.0000    0.0000    0.0000   9.000...
> >     84.0000    4.8038    0.0000    3.1886   2.923...
> >      0.0000    0.0000    0.0000    1.1636  10.000...
> >      0.0000   10.7818  109.7884    0.0000  17.000...
> >      0.0000    7.9528    0.0000    4.7829  35.000...
> >
> > True that the data here are space delimited. But I need to read data
> > elsewhere where data are not space delimited.
> >
> > Any idea/suggestion would be appreciated.
> >
>
>The read.fortran function appears to work differently from how 
>FORTRAN would read the data if there are already decimals points in 
>the numbers.  If memory serves, FORTRAN ignores the decimal portion 
>of the format if it finds a decimal in what it reads.  The 
>read.fortran function appears to read the number 'as is' and then 
>multiplies by 10^-d, where d is the number of decimal places in the 
>format.  Since you have decimals specified, you should specify the 
>format with 0 decimal places, i.e.
>
>c("4F10.0","F8.0","3F3.0","20F2.0"))
>
>
>hope this is helpful,
>
>Dan
>
>
>Daniel J. Nordlund, PhD
>Research and Data Analysis Division
>Services & Enterprise Support Administration
>Washington State Department of Social and Health Services



More information about the R-help mailing list