【问题标题】:How to turn txt file to nice dataframe如何将txt文件转换为漂亮的数据框
【发布时间】:2020-06-03 13:45:27
【问题描述】:

我有一个包含曲目 ID、歌曲 ID、艺术家姓名和歌曲名称的 txt 文件。我想将其转换为 R 中的数据框以进行一些分析。什么是用于分离数据的好功能?下面是数据集的第一行。谢谢!

TRMMMKD128F425225D<SEP>SOVFVAK12A8C1350D9<SEP>Karkkiautomaatti<SEP>Tanssi vaan

【问题讨论】:

  • trackID在哪里结束,歌曲ID从哪里开始
  • 更新了示例行。不同的变量由行中的“”分隔。

标签: r text-mining


【解决方案1】:

我们可以使用read.table 将文件作为数据框直接读取,但列之间的分隔符(sep)只能是一个字符。

所以我们可以先使用readLines 读取文本文件,将'&lt;SEP&gt;' 使用gsub 替换为单个字符('\t'),然后使用read.table 指定列名。

data <- read.table(text = gsub('<SEP>', '\t', 
         readLines('filename.txt'), fixed = TRUE), 
         col.names = c('TrackID', 'SongID', 'ArtistName', 'SongName'),sep = "\t")
data

#             TrackID             SongID       ArtistName    SongName
#1 TRMMMKD128F425225D SOVFVAK12A8C1350D9 Karkkiautomaatti Tanssi vaan

【讨论】:

    【解决方案2】:

    我们可以使用separate

    library(tidyr)
    separate(df1, 'Col1', into = c('TrackID', 'SongID', 'ArtistName', 'SongName'),
    
             "\\<SEP\\>")
    

    【讨论】:

      【解决方案3】:

      您可以使用readLinesstrsplit

      rw <- readLines("X:/foo.txt")
      nice.df <- setNames(as.data.frame(do.call(rbind, strsplit(rw, "<SEP>"))),
                          c("Track.ID", "Song.ID", "Artist.Name", "Song.name"))
      nice.df
      #             Track.ID            Song.ID      Artist.Name   Song.name
      # 1 TRMMMKD128F425225D SOVFVAK12A8C1350D9 Karkkiautomaatti Tanssi vaan
      # 2 TRMMMKD128F425225D SOVFVAK12A8C1350D9 Karkkiautomaatti Tanssi vaan
      # 3 TRMMMKD128F425225D SOVFVAK12A8C1350D9 Karkkiautomaatti Tanssi vaan
      # 4 TRMMMKD128F425225D SOVFVAK12A8C1350D9 Karkkiautomaatti Tanssi vaan
      

      foo.txt 内容:

      TRMMMKD128F425225D<SEP>SOVFVAK12A8C1350D9<SEP>Karkkiautomaatti<SEP>Tanssi vaan
      TRMMMKD128F425225D<SEP>SOVFVAK12A8C1350D9<SEP>Karkkiautomaatti<SEP>Tanssi vaan
      TRMMMKD128F425225D<SEP>SOVFVAK12A8C1350D9<SEP>Karkkiautomaatti<SEP>Tanssi vaan
      TRMMMKD128F425225D<SEP>SOVFVAK12A8C1350D9<SEP>Karkkiautomaatti<SEP>Tanssi vaan
      

      【讨论】:

        猜你喜欢
        • 2023-03-16
        • 2022-01-10
        • 1970-01-01
        • 2022-01-23
        • 2022-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-21
        相关资源
        最近更新 更多