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

时间:2020-06-02 21:24:42

标签: r text-mining

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

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

3 个答案:

答案 0 :(得分:2)

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

因此,我们可以首先使用readLines来读取文本文件,将'<SEP>'的{​​{1}}替换为单个字符(gsub),然后使用'\t'指定列名。

read.table

答案 1 :(得分:0)

我们可以使用separate

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

         "\\<SEP\\>")

答案 2 :(得分: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