从多个标头导入数据

时间:2013-08-29 19:37:46

标签: r

当我尝试导入包含多个标题的数据时,我遇到了问题。

有文件:

    Ry1_Ch_1_2013-8-23_21-56-49.txt
    100.00 9918.21
    36.89 7247.92
    21.50 11825.56

    Ry2_Ch_2_2013-8-23_21-56-49.txt
    100.00 6103.52
    97.81 7247.92
    79.96 9536.74
    78.73 3433.23
    29.11 1144.41
    28.85 12207.03
    26.13 12969.97
    24.75 50000000.00
    16.26 34332.28
    .
    .
    .

    Ry28_Ch_1_2013-8-23_22-0-11.txt
    100.00 10299.68
    40.35 4577.64
    26.50 3433.23
    15.27 6484.99

该文件有多个空格,标题以 .txt 字符串结尾。

每个标头都有 2列,其中包含我想要绘制和分析的数据。我建议将每个表保存在变量中,然后使用它。

我尝试使用R中的 read.table 命令,但效果不佳。

1 个答案:

答案 0 :(得分:1)

txt <- readLines(textConnection(" Ry1_Ch_1_2013-8-23_21-56-49.txt
100.00 9918.21
36.89 7247.92
21.50 11825.56

Ry2_Ch_2_2013-8-23_21-56-49.txt
100.00 6103.52
97.81 7247.92
79.96 9536.74
78.73 3433.23
29.11 1144.41
28.85 12207.03
26.13 12969.97
24.75 50000000.00
16.26 34332.28
.
.
.

Ry28_Ch_1_2013-8-23_22-0-11.txt
100.00 10299.68
40.35 4577.64
26.50 3433.23
15.27 6484.99"))

将排除少于7个字符的行,并使用{。{1}}匹配“.txt”来标记“section”开头。 'section'vaariable只是那些命中的cumsum所以'.txt'出现之间的行都将具有相同的节号。同一“部分”组内的read.table:

grepl

因此,将这些存储为列表和名称

section <- cumsum( grepl("txt", txt[nchar(txt)>7]) )

lapply( split(txt[nchar(txt)>7] , section), 
        function(t) read.table(text=t, skip=1) )
$`1`
      V1       V2
1 100.00  9918.21
2  36.89  7247.92
3  21.50 11825.56

$`2`
      V1          V2
1 100.00     6103.52
2  97.81     7247.92
3  79.96     9536.74
4  78.73     3433.23
5  29.11     1144.41
6  28.85    12207.03
7  26.13    12969.97
8  24.75 50000000.00
9  16.26    34332.28

$`3`
      V1       V2
1 100.00 10299.68
2  40.35  4577.64
3  26.50  3433.23
4  15.27  6484.99