繁体   English   中英

将Audioscrobbler数据读入R

[英]reading Audioscrobbler data into R

我在将中等大小的数据集读入R时遇到问题。

该数据集是由Audioscrobbler发布的数据库,现在与Last.fm合并,用户可以听听音乐。 数据集在这里可用,它有三个数据集:主要(和更大)数据集,用户ID,艺术家ID和用户听取给定艺术家的次数。 第二个列有两列:艺术家ID和艺术家的名字。 那是我遇到问题的数据集。

数据集似乎格式不正确,我不知道如何阅读它。

我试过这个:

test <- scan("artist_data.txt", what=list("numeric", "character"), fill=T)

然而,它返回一个列表,数据没有很好地分开,当我怀疑有更多记录时,它会显示“读取18996条记录”(虽然我不确定,因为我无法读取数据!)。

有任何想法吗?

很抱歉没有给出一个简单的可重复的例子,但由于我无法读取数据,我不知道如何给出一个可重复的例子(我知道这会让你们很难给出答案。但你可以下载数据集,虽然可能需要一些时间。再次抱歉)。

这个数据集是一团糟!

一些问题是(对于任何能够回答这个问题的雄心勃勃或知识渊博的人):

  • 艺术家名称中的奇怪字符和符号(当您阅读文件时,您需要使用encoding="UTF-8"
  • 有些项目甚至从右到左阅读(不知道如何解决这个问题!)
  • 一些艺术家的名字中都有实际的标签
  • 其中一些项目的名称中包含“\\ t”,这使得在没有首先搜索和替换所有这些内容的情况下难以进行基本搜索
  • 一些艺术家的名字在多行上(导致一行只有艺术家名字的最后一部分)(并且,是的,自动换行是关闭的)

我的建议是首先用一个好的文本编辑器进行大量的清理(我没有任何问题地使用过SciTE)。 我必须做的一些基本的清理工作,包括删除额外的标签(应该只有一个标签分隔艺术家ID和艺术家名称),使用一些正则表达式删除没有的行从数字开始,并确保所有行结尾都相同(源文件在某些​​位置具有不同的行结尾)。

在那之后,你最好的选择可能是加载数据,找到问题行(R应该在遇到错误时告诉你),在文本编辑器中修复它们,重新加载数据,找到问题行......直到你没有错误,使用:

artist.data = read.delim("artist_data.txt", header=F, sep="\t", encoding="UTF-8")

我实际上能够在Gnumeric中打开我的半清洁文本文件,在按升序对行进行排序之后我能够发现一些问题,但我不认为这是必需的。

即使在完成所有这些操作之后,由于标签管理不佳,因为并非所有艺术家名称都在Audioscrobbler数据库中正确记录,因此您的数据集仍然会变得一团糟。 因此,你可能会有艺术家,如“02Nine ihch Nalis-Heard like”。

如果有人能建议一种有效的方法来清理这些数据,我很乐意学习它! 看来知道它会很有用。

这应该(可能)有效:

ad <- readLines(pipe("sed artist_data.txt -e 's!\\x0D!!g'", open="rb"))
library("gsubfn")
addf <- strapply(ad, "^([^\\t]*)\\t(.*)$", c, simplify=rbind)

第一部分确实处理嵌入式控件-M,第二部分尝试仅拆分第一个选项卡(但不包括任何后续选项卡)。

它根本不快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM