如何将 txt 文件转换为漂亮的数据框
How to turn txt file to nice dataframe
我有一个包含曲目 ID、歌曲 ID、艺术家姓名和歌曲名称的 txt 文件。我想将其转换为 R 中的数据框以进行一些分析。什么是用于分离数据的好函数?下面是数据集的第一行。谢谢!
TRMMMKD128F425225D<SEP>SOVFVAK12A8C1350D9<SEP>Karkkiautomaatti<SEP>Tanssi vaan
我们可以使用separate
library(tidyr)
separate(df1, 'Col1', into = c('TrackID', 'SongID', 'ArtistName', 'SongName'),
"\<SEP\>")
我们可以使用read.table
直接将文件作为数据帧读取,但列之间的分隔符(sep
)只能是一个字符。
所以我们可以先用readLines
读取文本文件,用gsub
替换'<SEP>'
为单个字符('\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
您可以使用 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
我有一个包含曲目 ID、歌曲 ID、艺术家姓名和歌曲名称的 txt 文件。我想将其转换为 R 中的数据框以进行一些分析。什么是用于分离数据的好函数?下面是数据集的第一行。谢谢!
TRMMMKD128F425225D<SEP>SOVFVAK12A8C1350D9<SEP>Karkkiautomaatti<SEP>Tanssi vaan
我们可以使用separate
library(tidyr)
separate(df1, 'Col1', into = c('TrackID', 'SongID', 'ArtistName', 'SongName'),
"\<SEP\>")
我们可以使用read.table
直接将文件作为数据帧读取,但列之间的分隔符(sep
)只能是一个字符。
所以我们可以先用readLines
读取文本文件,用gsub
替换'<SEP>'
为单个字符('\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
您可以使用 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