在R中读取具有不等长度列的数据集

时间:2013-08-02 09:18:03

标签: r reshape read.table

我有以下格式给出的许多数据集:

Station number: 505
Location:       Sundarijal                                                        Latitude: 27 46 30
River:          Bagmati River                                                     Longitude: 85 25 40

Year:           1963

                                Mean daily discharge in m3/s
                                ============================

Day     Jan.   Feb.   Mar.   Apr.   May    Jun.   Jul.   Aug.   Sep.   Oct.   Nov.   Dec.   
 01    0.250  0.190  0.100  0.100  0.310  0.160  0.900   4.90   4.86   1.50  0.710  0.400
 02    0.250  0.160  0.130  0.130  0.250  0.160  0.900   4.78   5.01   1.68  0.710  0.400
 03    0.250  0.160  0.220  0.130  0.220  0.600  0.700   4.90   6.00   1.77  0.775  0.400
 04    0.250  0.160  0.190  0.160  0.190  0.160  0.650   4.30   7.05   2.35  0.775  0.400
 05    0.220  0.160  0.160  0.160  0.190  0.160  0.550   4.06   4.04   1.59  0.710  0.400
 06    0.220  0.160  0.160  0.190  0.190  0.160  0.700   3.34   3.64   1.41  0.645  0.400
 07    0.220  0.160  0.280  0.190  0.190  0.190   1.18   3.22   3.23   1.32  0.645  0.355
 08    0.220  0.160  0.190  0.190  0.310  0.130  0.800   4.54   3.12   1.23  0.580  0.355
 09    0.220  0.130  0.190  0.190  0.280  0.160   1.11   5.74   2.79   1.17  0.580  0.355
 10    0.220  0.130  0.160  0.190  0.250  0.190   1.18   5.46   2.68   1.17  0.580  0.355
 11    0.220  0.130  0.160  0.220  0.190  0.160   1.46   4.66   2.57   1.10  0.535  0.355
 12    0.220  0.130  0.160  0.220  0.190  0.160   2.05   4.30   2.24   1.10  0.535  0.355
 13    0.220  0.130  0.130  0.220  0.160  0.130   1.32   3.58   2.57   1.04  0.535  0.355
 14    0.220  0.130  0.130  0.250  0.160  0.130   1.11   2.86   2.24   1.04  0.535  0.355
 15    0.220  0.130  0.130  0.220  0.160   2.32  0.900   6.16   1.95   1.04  0.535  0.355
 16    0.250  0.130  0.130  0.250  0.130  0.340   1.87   3.58   2.35   1.04  0.490  0.310
 17    0.220  0.130  0.130  0.220  0.130  0.340  0.970   4.42   1.95  0.970  0.490  0.310
 18    0.220  0.100  0.100  0.160  0.100  0.280   2.62   5.60   1.77  0.970  0.490  0.310
 19    0.220  0.100  0.100  0.160  0.100  0.650   1.39   4.30   1.68  0.905  0.490  0.310
 20    0.220  0.100  0.100  0.160  0.090  0.550   1.69   4.30   1.59  0.905  0.490  0.310
 21    0.220  0.100  0.100  0.130  0.090  0.700   2.14   4.06   1.50  0.905  0.490  0.310
 22    0.220  0.100  0.190  0.160  0.080  0.400   2.41   6.30   1.41  0.840  0.490  0.310
 23    0.220  0.100  0.190  0.160  0.090  0.340   1.87   4.78   1.41  0.840  0.445  0.310
 24    0.220  0.100  0.130  0.190  0.080  0.280   2.23   5.04   1.23  0.840  0.445  0.310
 25    0.280  0.100  0.100  0.220  0.080  0.280   2.62   4.30   1.23  0.840  0.445  0.310
 26    0.190  0.100  0.100  0.250  0.130  0.250   4.54   4.06   1.86  0.840  0.445  0.310
 27    0.190  0.100  0.100  0.220  0.100  0.800   2.50   9.50   1.59  0.775  0.445  0.310
 28    0.190  0.100  0.100  0.190  0.550  0.850   3.94   4.42   1.68  0.710  0.445  0.310
 29    0.190         0.100  0.280  0.160  0.800   7.02   3.94   2.35  0.710  0.445  0.310
 30    0.190         0.100  0.220  0.100  0.900   5.46   4.18   1.95  0.710  0.400  0.310
 31    0.190         0.100         0.220          4.54   10.0         0.710         0.310

我正在尝试将所有列附加在一起,以便为全年制作一个列。但是,当我尝试使用以下内容阅读:

temp <- read.table(files[i], skip = 10, fill = TRUE, nrows = 31)
temp <- temp[,2:13]

空白字段只是在每行的末尾而不是在所需的列中结束。例如,在第29天,2月获得3月的价值,3月获得4月的价值等,直到12月获得NA。基本上,无论如何,在此表中阅读时,是否有区分较大的间隙和较小的间隙?

1 个答案:

答案 0 :(得分:4)

这看起来像是固定宽度格式的文件。试试这个例子:

  read.fwf(files[i],skip=10,widths=rep(c(6,-1),13))