簡體   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