将 txt 文件导入或解析为 R 中的数据框

Import or parse a txt file into a dataframe in R

我正在尝试将文本文件导入数据框。文本文件中的记录由 56 个破折号分隔。该文件如下所示:

    --------------------------------------------------------
    Record: 1
    ColumnTitleABC: string of text
    ColumnTitleDEFG: string of text
    --------------------------------------------------------
    Record: 2
    ColumnTitleABC: string of text
    ColumnTitleDEFG: string of text
    --------------------------------------------------------

我试过使用 read_delim("TextFileName.txt", delim = ":")。 它只是 returns 没有文本字符串的列标题。有没有更好的 R 函数来读取这种类型的文本文件?或者在将其移动到数据帧之前,可能会有某种方法在 R 中对其进行解析?

我希望最终结果是这样的数据框:

    Record  ColumnTitleABC  ColumnTitleDEFG
    1       string of text  string of text
    2       string of text  string of text

在将数据转换为可用格式之前,您需要对数据进行一些预处理。

lines <- readLines('data.txt')

do.call(rbind, by(lines, cumsum(grepl('------', lines)), function(x) {
  x <- x[-1]
  name <- sub(':.*', '', x)
  value <- sub('.*:', '', x)
  setNames(as.data.frame(t(value)), name)
})) -> result

result
#    Record  ColumnTitleABC ColumnTitleDEFG
#1        1  string of text  string of text
#2        2  string of text  string of text
  • cumsum(grepl('------', lines)) 将创建将一条记录与另一条记录分开的组。

  • x <- x[-1] 已完成,因为每个组中的第一个值只是 ------ 行,因此我们将其删除。

  • name <- sub(':.*', '', x) 删除冒号后的所有内容以获取列名。

  • value <- sub('.*:', '', x) 删除冒号前的所有内容以获取值。

  • setNames(as.data.frame(t(value)), name) 创建一个 1 X 3 数据框。