如何将txt文件转为漂亮的数据框?

问题描述 投票:0回答:1

我有一个txt文件,其中包含曲目ID,歌曲ID,艺人名和歌曲名。我想在R中把它转换成一个数据框架来做一些分析。有什么好的函数可以用来分离数据?下面是数据集的最上面一行。谢谢!我有一个txt文件,其中包含Track的数据。

TRMMMKD128F425225D<SEP>SOVFVAK12A8C1350D9<SEP>Karkkiautomaatti<SEP>Tanssi vaan
r text-mining
1个回答
1
投票

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

所以我们可以先用 readLines 要读取文本文件,请将 '<SEP>' 使用 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

0
投票

我们可以使用 separate

library(tidyr)
separate(df1, 'Col1', into = c('TrackID', 'SongID', 'ArtistName', 'SongName'),

         "\\<SEP\\>")

0
投票

您可以使用 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
© www.soinside.com 2019 - 2024. All rights reserved.