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

R 如何将txt文件转换为漂亮的数据帧,r,text-mining,R,Text Mining,我有一个包含曲目ID、歌曲ID、艺术家名称和歌曲名称的txt文件。我想把它转换成R中的数据帧来做一些分析。使用什么样的函数来分离数据?下面是数据集的顶行。谢谢 TRMMMKD128F425225D<SEP>SOVFVAK12A8C1350D9<SEP>Karkkiautomaatti<SEP>Tanssi vaan trmmmkd128f425dsovfvak12a8c1350d9karkkiautomatantiansi-vaan 我们可以使用单独的 li

我有一个包含曲目ID、歌曲ID、艺术家名称和歌曲名称的txt文件。我想把它转换成R中的数据帧来做一些分析。使用什么样的函数来分离数据?下面是数据集的顶行。谢谢

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

我们可以使用
单独的

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

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

我们可以使用
单独的

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

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

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

因此,我们可以首先使用
readLines
读取文本文件,使用
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

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

因此,我们可以首先使用
readLines
读取文本文件,使用
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

data您可以使用
readLines
strsplit

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

rw您可以使用
readLines
strsplit

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

rw trackID在哪里结束,歌曲id在哪里开始更新样本行。行中的“”分隔了不同的变量。trackID结束和song id开始的位置更新了样本行。行中的“”分隔不同的变量。