我有一个txt文件,其中包含曲目ID,歌曲ID,艺人名和歌曲名。我想在R中把它转换成一个数据框架来做一些分析。有什么好的函数可以用来分离数据?下面是数据集的最上面一行。谢谢!我有一个txt文件,其中包含Track的数据。
TRMMMKD128F425225D<SEP>SOVFVAK12A8C1350D9<SEP>Karkkiautomaatti<SEP>Tanssi vaan
我们可以使用 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
我们可以使用 separate
library(tidyr)
separate(df1, 'Col1', into = c('TrackID', 'SongID', 'ArtistName', 'SongName'),
"\\<SEP\\>")
您可以使用 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
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