首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将txt文件转换为良好的数据格式

如何将txt文件转换为良好的数据格式
EN

Stack Overflow用户
提问于 2020-06-02 21:24:42
回答 3查看 145关注 0票数 0

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

代码语言:javascript
复制
TRMMMKD128F425225D<SEP>SOVFVAK12A8C1350D9<SEP>Karkkiautomaatti<SEP>Tanssi vaan
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-03 05:18:24

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

因此,我们可以首先使用readLines读取文本文件,用单个字符('\t')替换使用gsub'<SEP>',然后使用指定列名的read.table

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2020-06-02 21:30:34

我们可以使用separate

代码语言:javascript
复制
library(tidyr)
separate(df1, 'Col1', into = c('TrackID', 'SongID', 'ArtistName', 'SongName'),

         "\\<SEP\\>")
票数 0
EN

Stack Overflow用户

发布于 2020-06-03 05:45:27

您可以使用readLinesstrsplit

代码语言:javascript
复制
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内容:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62161650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档