【发布时间】:2015-01-24 23:27:43
【问题描述】:
我想打开这个 tsv 文件:userid-timestamp-artid-artname-traid-traname.tsv (http://www.dtic.upf.edu/~ocelma/MusicRecommendationDataset/lastfm-1K.html)
我知道这个文件包含 19,150,868 行,但是当我用 R 读取这个文件时,我只获得了 835K 行。
setwd('C:/xxx/lastfm-dataset-1K.tar/lastfm-dataset-1K')
df <- read.table('userid-timestamp-artid-artname-traid-traname.tsv', header=F, sep='\t', fill=T, quote='')
有时有些列是空的,这就是我使用fill=T的原因。
我很确定问题出在特殊字符上。
提取的最后一行是:user_000033 2007-05-24T19:50:25Z ~8+ ŤÄ
我尝试了几个fileEncoding,但都不起作用。
编辑:
其他人对完全相同的文件也有同样的问题,但没有找到答案: read.table only reads the first 835873 rows
我终于用 Python 做到了,它可以工作:
import pandas as pd
import csv
df = pd.read _csv('userid-timestamp-artid-artname-traid-traname.tsv', quoting=csv.QUOTE_NONE, header=None , sep='\t', na_values=[''], error_bad_lines=False)
所以问题是:如何对 R 做同样的事情?为什么奇怪的字符会给 R 而不是 Python 带来问题?
【问题讨论】:
-
我认为最好的办法可能是将数据存储在 SOLite 数据库中。 r.789695.n4.nabble.com/…
-
我会推荐
fread来自data.table包的数据大小 -
@mkemp6
fread不起作用,因为它无法处理缺少列的行:stackoverflow.com/questions/18597488/fill-option-for-fread -
@Stephane 你有机会用 awk 或 python 进行预处理吗?
-
@mkemp6。是的,我是在 Python 中完成的,它可以工作(请参阅更新)。我真的不明白为什么奇怪的字符会给 R 而不是 Python 造成问题! ://