我想将此输出文件(gibbs_samples)读入 R ,并创建一个迭代次数(1-44)和差异之间的表格。最终表应该有10列,每列:
"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行应该被忽视
ii)要删除的第二列中的数字9和每3行应该属于同一行,
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)左边距和数字之间有空格
iv)有些列(主要是第1列和第2列)之间没有空格
示例:
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”:
-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
非常感谢您的帮助!
答案 0 :(得分:2)
在基础R中,有一个函数read.fwf
可以读取固定宽度的文件。它可以通过将list
传递给参数widths
来读取多行文件格式。
以下是数据的起点(假设您的数据文件名为“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行的列对齐似乎有些奇怪。通常不需要执行以下步骤,因为数字转换会自动发生。)
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 ...
唯一剩下的任务是删除第二列,这是微不足道的。
答案 1 :(得分:-1)
R对于执行数据操作不是很方便。在将其加载到R中进行统计分析之前,您应该以另一种方式进行此类操作。您可以使用ETL工具(提取,转换和加载)完成此项工作。我目前只熟悉一个ETL工具(SQL Server附带的Integration Services),但我确信其他工具可用。
或者,您可以编写一个脚本来为您执行操作。
原因取决于您的技术选择和技能...... :)
祝你好运。