【问题标题】:Reading text files into tidytext and adding metadata将文本文件读入 tidytext 并添加元数据
【发布时间】:2019-03-01 21:28:52
【问题描述】:

我在一个目录中有几千个 .txt 文件,我想将它们全部读入 tidytext 中,然后在其中添加元数据列。文件名本身包含所有元数据,我已经成功地使用 substr 来解析一个文件的不同部分的位置、时间、日期等,但我找不到一个示例来说明如何继续为所有人执行此操作目录中的文件。

例如,我有 .txt 文件:

FFTJan141138

FFTJan151136

FFTJan161151

FFTJan171144

我已使用以下方法将文件从我的 wd 读取到 tibble 中:

tbl <- list.files(pattern = "*.txt") %>% 
map_chr(~ read_file(.)) %>% 
data_frame(text = .)

我需要帮助的是插入一些与文件名中的元数据相对应的数据列。

例如,对于名为:FFTJan141138 的第一个文件 我现在有了这个文件的 tibble 行,其中有一列是 FFTJan141138 的内容。我想在这一行中添加四个额外的列,包括 FFT、JAN、14 和 1138。 我可以使用 substr 解析文件名中的文本,但不知道如何执行此操作,因为数据已读入 tidytext。任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: tidytext


    【解决方案1】:

    我会稍微调整一下您的工作流程以获得您想要的信息。要查找工作目录中的所有文本文件,可以使用带有参数的 list.files:

    all_txts <- list.files(pattern = ".txt$")
    

    all_txts 对象将成为包含所有文件名的字符向量。

    然后,您可以设置一个管道来读取所有文本文件,并使用map() 中的mutate() 来用文件名注释每一行。

    library(tidyverse)
    
    map_df(all_txts, ~ data_frame(txt = read_file(.x)) %>%
            mutate(filename = basename(.x)))
    

    【讨论】:

    • 这非常有效 - 谢谢。在上面的代码中,我添加了一些额外的 mutate 语句来解析文件名字符串以提取元数据,然后将其包含在数据框中。使用我最初的方法,我确实找到了一个不太优雅、更“活塞驱动”的解决方案,首先读取文本文件,然后读取和解析文件名,最后使用 add_column 压缩文本和元数据。您上面的解决方案更加简化。 P.S. 我喜欢你的书,我将在可能的重大项目中使用 tidytext。
    • 另一件事....一旦我实施了解决方案,我在尝试 unnest_tokens(word,text) 时遇到了麻烦。引发的错误是: Check_input(x) 中的错误:输入必须是任意长度的字符向量或字符向量列表,每个字符向量的长度为 1。 ....想法?
    • 啊,如果您也想使用 unnest_tokens(),请查看此问题的答案:stackoverflow.com/questions/54850258/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 2015-04-30
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多