使用R从具有多个列的数据帧读取和构造表 [英] reading and constructing a table from a data frame with multiple columns using R

查看:209
本文介绍了使用R从具有多个列的数据帧读取和构造表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将此输出文件(gibbs_samples)读入R并创建一个迭代次数(1- 44)和方差之间的表。最后一张表应该有10列,每列:

I would like to read this output file (gibbs_samples) into R and creat a table of between the number of iterations (1- 44) and variances. The final table should be have 10 columns, with each column:

"iter","va1","cova12","va2","vc1","covc12","vc2","ev1","cove12","ev2"

被空格隔开:

1 0.2319E-01 0.1166E-02 0.9017E-02 0.3545E-01 0.1543E-01 0.1860 0.5173E-01 0.1542E-01 0.2297
2
.
.
44 

注意:

i)前10行应该被忽略

i) The first 10 lines should be disregarded

ii)要删除的第二列中的数字9和每3行应该落在同一行中, p>

ii) The number 9 in the second column to be removed and every 3 lines should fall in the same row,

 example:

          1       9
 0.2319E-01 0.1166E-02 0.9017E-02 0.3545E-01 0.1543E-01 0.1860     0.5173E-01
 0.1542E-01 0.2297    

应该形成第一行:

1 0.2319E-01 0.1166E-02 0.9017E-02 0.3545E-01 0.1543E-01 0.1860 0.5173E-01 0.1542E-01 0.2297

iii)左边距和数字

iii) There is an empty space between the left margin and the numbers

iv)一些列(大多是第1和第2列)之间没有空格

iv) Some columns (mostly cols 1 and 2) have no empty space between them

示例:

      21       9
 0.2331E-01-0.1479E-03 0.7441E-02 0.2520E-01 0.1537E-01 0.5753E-01 0.7325E-01
 0.2136E-01 0.1439    
      22       9
 0.2377E-01-0.2597E-03 0.7385E-02 0.2614E-01 0.1565E-01 0.6142E-01 0.7073E-01
 0.1946E-01 0.1424  

以下是输出文件gibbs_samples:

Below is the output file "gibbs_samples":

          -1       9       4
        1    6    6    1    1
        2    6    6    1    2
        3    6    6    2    2
        4    7    7    1    1
        5    7    7    1    2
        6    7    7    2    2
        7    0    0    1    1
        8    0    0    1    2
        9    0    0    2    2
       1       9
 0.2319E-01 0.1166E-02 0.9017E-02 0.3545E-01 0.1543E-01 0.1860     0.5173E-01
 0.1542E-01 0.2297    
       2       9
 0.2315E-01 0.1457E-02 0.8491E-02 0.3538E-01 0.1838E-01 0.9397E-01 0.6191E-01
 0.1684E-01 0.1538    
       3       9
 0.2311E-01 0.1363E-02 0.8228E-02 0.3032E-01 0.1593E-01 0.7850E-01 0.6831E-01
 0.1998E-01 0.1450    
       4       9
 0.2282E-01 0.1120E-02 0.7982E-02 0.2935E-01 0.1425E-01 0.7046E-01 0.6993E-01
 0.1987E-01 0.1411    
       5       9
 0.2263E-01 0.1138E-02 0.7893E-02 0.2935E-01 0.1524E-01 0.6388E-01 0.7037E-01
 0.1909E-01 0.1439    
       6       9
 0.2202E-01 0.1260E-02 0.7649E-02 0.3002E-01 0.1776E-01 0.6507E-01 0.7196E-01
 0.2067E-01 0.1429    
       7       9
 0.2229E-01 0.9052E-03 0.7424E-02 0.3015E-01 0.1945E-01 0.6771E-01 0.7075E-01
 0.2017E-01 0.1438    
       8       9
 0.2163E-01 0.7266E-03 0.7327E-02 0.3211E-01 0.2199E-01 0.6600E-01 0.7120E-01
 0.1876E-01 0.1458    
       9       9
 0.2134E-01 0.6320E-03 0.7375E-02 0.3316E-01 0.1930E-01 0.6214E-01 0.7083E-01
 0.2038E-01 0.1465    
      10       9
 0.2188E-01 0.8527E-03 0.7504E-02 0.2835E-01 0.1504E-01 0.6133E-01 0.7096E-01
 0.1839E-01 0.1458    
      11       9
 0.2111E-01 0.9058E-03 0.7598E-02 0.2629E-01 0.1543E-01 0.6452E-01 0.7105E-01
 0.2034E-01 0.1450    
      12       9
 0.2129E-01 0.7306E-03 0.7787E-02 0.2844E-01 0.1472E-01 0.6338E-01 0.7284E-01
 0.1831E-01 0.1452    
      13       9
 0.2163E-01 0.7417E-03 0.7484E-02 0.2881E-01 0.1532E-01 0.6110E-01 0.7104E-01
 0.1979E-01 0.1454    
      14       9
 0.2200E-01 0.4375E-03 0.7549E-02 0.3004E-01 0.1674E-01 0.6364E-01 0.7125E-01
 0.1999E-01 0.1432    
      15       9
 0.2189E-01 0.2382E-03 0.7774E-02 0.2962E-01 0.1681E-01 0.6627E-01 0.7203E-01
 0.1894E-01 0.1419    
      16       9
 0.2155E-01 0.2874E-03 0.7529E-02 0.3123E-01 0.1612E-01 0.6113E-01 0.7190E-01
 0.1877E-01 0.1485    
      17       9
 0.2167E-01 0.2198E-03 0.7418E-02 0.3035E-01 0.1574E-01 0.6015E-01 0.7060E-01
 0.1976E-01 0.1484    
      18       9
 0.2257E-01 0.4865E-04 0.7392E-02 0.3082E-01 0.1619E-01 0.5738E-01 0.7020E-01
 0.1838E-01 0.1443    
          19       9
 0.2184E-01 0.1929E-03 0.7315E-02 0.3363E-01 0.1854E-01 0.6592E-01 0.7136E-01
 0.1890E-01 0.1466    
      20       9
 0.2214E-01 0.7481E-04 0.7492E-02 0.2906E-01 0.1682E-01 0.6001E-01 0.7087E-01
 0.2037E-01 0.1469    
      21       9
 0.2331E-01-0.1479E-03 0.7441E-02 0.2520E-01 0.1537E-01 0.5753E-01 0.7325E-01
 0.2136E-01 0.1439    
      22       9
 0.2377E-01-0.2597E-03 0.7385E-02 0.2614E-01 0.1565E-01 0.6142E-01 0.7073E-01
 0.1946E-01 0.1424    
      23       9
 0.2366E-01-0.1304E-03 0.7536E-02 0.2996E-01 0.1942E-01 0.5751E-01 0.7112E-01
 0.2063E-01 0.1442    
      24       9
 0.2353E-01-0.1806E-03 0.7412E-02 0.3136E-01 0.2238E-01 0.6733E-01 0.7275E-01
 0.1907E-01 0.1425    
      25       9
 0.2278E-01-0.3747E-03 0.7351E-02 0.3003E-01 0.1832E-01 0.6088E-01 0.7126E-01
 0.2140E-01 0.1469    
      26       9
 0.2259E-01-0.3012E-03 0.7219E-02 0.2732E-01 0.1631E-01 0.5692E-01 0.6851E-01
 0.1875E-01 0.1447    
      27       9
 0.2231E-01-0.2277E-03 0.7038E-02 0.2828E-01 0.1892E-01 0.5589E-01 0.6876E-01
 0.1963E-01 0.1413    
      28       9
 0.2229E-01-0.2523E-03 0.6896E-02 0.3183E-01 0.1796E-01 0.5565E-01 0.6928E-01
 0.1921E-01 0.1425    
      29       9
 0.2152E-01-0.3977E-03 0.7060E-02 0.3026E-01 0.1822E-01 0.5779E-01 0.7268E-01
 0.1956E-01 0.1445    
      30       9
 0.2109E-01-0.2360E-03 0.6998E-02 0.3183E-01 0.1643E-01 0.5578E-01 0.7322E-01
 0.2124E-01 0.1492    
      31       9
 0.2135E-01-0.2020E-04 0.6787E-02 0.2956E-01 0.1830E-01 0.5778E-01 0.7114E-01
 0.2004E-01 0.1447    
      32       9
 0.2154E-01 0.1254E-03 0.6829E-02 0.3317E-01 0.2162E-01 0.6202E-01 0.7061E-01
 0.1795E-01 0.1412    
      33       9
 0.2199E-01-0.6386E-04 0.6709E-02 0.2947E-01 0.1854E-01 0.5679E-01 0.7039E-01
 0.1803E-01 0.1458    
      34       9
 0.2184E-01 0.8950E-04 0.6689E-02 0.3075E-01 0.1846E-01 0.5174E-01 0.7162E-01
 0.1975E-01 0.1443    
      35       9
 0.2168E-01 0.4526E-04 0.6550E-02 0.3146E-01 0.1977E-01 0.5322E-01 0.7290E-01
 0.1834E-01 0.1470    
      36       9
 0.2153E-01 0.2621E-03 0.6705E-02 0.2954E-01 0.1959E-01 0.5310E-01 0.7244E-01
 0.1869E-01 0.1441    
      37       9
 0.2234E-01 0.2712E-03 0.6856E-02 0.3043E-01 0.2318E-01 0.6494E-01 0.7143E-01
 0.1889E-01 0.1426    
      38       9
 0.2217E-01 0.2001E-03 0.7079E-02 0.2945E-01 0.2101E-01 0.6468E-01 0.7113E-01
 0.1815E-01 0.1429    
      39       9
 0.2235E-01 0.2269E-03 0.7234E-02 0.2940E-01 0.1930E-01 0.6252E-01 0.7006E-01
 0.2083E-01 0.1450    
      40       9
 0.2280E-01 0.2957E-04 0.7126E-02 0.2971E-01 0.1971E-01 0.5912E-01 0.7027E-01
 0.1819E-01 0.1493    
      41       9
 0.2296E-01 0.1358E-03 0.6955E-02 0.2877E-01 0.1901E-01 0.5768E-01 0.6981E-01
 0.1956E-01 0.1449    
      42       9
 0.2302E-01-0.2015E-03 0.7196E-02 0.3145E-01 0.1959E-01 0.5772E-01 0.7115E-01
 0.2065E-01 0.1445    
      43       9
 0.2277E-01-0.2184E-03 0.6900E-02 0.3119E-01 0.2150E-01 0.5739E-01 0.6990E-01
 0.2023E-01 0.1435    
      44       9
 0.2300E-01-0.1301E-03 0.6936E-02 0.2865E-01 0.1844E-01 0.5872E-01 0.6876E-01
 0.1887E-01 0.1478    

您的帮助将非常感谢!

Baz

推荐答案

在基数R中有一个函数 read.fwf 可以读取固定宽度的文件。通过将列表传递给参数宽度,可以读取多行文件格式。

In base R there is the function read.fwf that reads fixed width files. It has the capability to read multi-line file formats, by passing a list to the argument widths.

这是您的数据的起点(假设您的数据文件称为raw):

Here is a starting point for your data, (assuming your data file is called "raw"):

dat <- read.fwf(raw, skip=11, 
    widths=list(
        c(8, 8), 
        c(11, rep(11, 6)),
        c(11, 11)
        ),
    stringsAsFactors=FALSE,
    colClasses="character"
)

将列转换为数字。 (您的数据的第19行的列对齐似乎有些奇怪,通常以下步骤不是必需的,因为数字转换会自动发生。)

Convert columns to numeric. (There seems to be something odd with the column alignment of row 19 of your data. Usually the following step would not be necessary, because numeric conversion happens automatically.)

dat <- as.data.frame(lapply(dat, as.numeric))

结果:

str(dat)

'data.frame':   44 obs. of  11 variables:
 $ V1 : num  1 2 3 4 5 6 7 8 9 10 ...
 $ V2 : num  9 9 9 9 9 9 9 9 9 9 ...
 $ V3 : num  0.0232 0.0232 0.0231 0.0228 0.0226 ...
 $ V4 : num  0.00117 0.00146 0.00136 0.00112 0.00114 ...
 $ V5 : num  0.00902 0.00849 0.00823 0.00798 0.00789 ...
 $ V6 : num  0.0355 0.0354 0.0303 0.0294 0.0294 ...
 $ V7 : num  0.0154 0.0184 0.0159 0.0142 0.0152 ...
 $ V8 : num  0.186 0.094 0.0785 0.0705 0.0639 ...
 $ V9 : num  0.0517 0.0619 0.0683 0.0699 0.0704 ...
 $ V10: num  0.0154 0.0168 0.02 0.0199 0.0191 ...
 $ V11: num  0.23 0.154 0.145 0.141 0.144 ...

唯一剩下的任务是删除第二列,这是微不足道的。

The only remaining task is to remove the second column, which is trivial.

这篇关于使用R从具有多个列的数据帧读取和构造表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆