在这种特殊情况下如何使用 read_table 或 fread ?
How to use read_table or fread in this particular case?
如您所知,R
中的 read.table
是一个非常有用但速度较慢的函数,尤其是在读取大型数据库时。为了解决与该功能相关的问题,存在 readr
和 data.table
包中的 read_table
和 fread
等功能。不幸的是,他们的论点与 read.table
不同,这让我很难复制这个例子:
download.file("https://datasets.imdbws.com/title.basics.tsv.gz", "mov_title")
download.file("https://datasets.imdbws.com/title.ratings.tsv.gz", "mov_rating")
title <- read.table("mov_title", sep="\t", header=TRUE,
fill=TRUE, na.strings="\N", quote="")
rating <- read.table("mov_rating", sep="\t", header=TRUE,
fill=TRUE, na.strings="\N", quote="")
基本上,我想使用 fread
或 read_table
(或者如果可能的话两者都使用)来创建我的 "title" 和 "rating" 数据库。任何建议或参考将不胜感激。
这似乎工作得很好...data.table::fread()
可以处理 gz-files。
设置 \t
(=tab) 作为分隔符。
由于一些 movie-titles 包含引号,请将引号设置为空; quote = ""
。 (或者不接受,只接受警告)。
library( data.table )
title <- fread( "https://datasets.imdbws.com/title.basics.tsv.gz",
sep = "\t", quote = "" )
rating <- fread( "https://datasets.imdbws.com/title.ratings.tsv.gz",
sep = "\t", quote = "" )
fread 支持 .gz 文件以及从 url 读取。您可以保持其余参数与 read.table
中的参数相同
library(data.table)
title=fread("https://datasets.imdbws.com/title.basics.tsv.gz",sep = "\t",quote = "",na.strings = "\N",header = T,fill = T)
> dim(title)
[1] 6518809 9
>
>
> head(title)
tconst titleType primaryTitle originalTitle isAdult startYear endYear
1: tt0000001 short Carmencita Carmencita 0 1894 NA
2: tt0000002 short Le clown et ses chiens Le clown et ses chiens 0 1892 NA
3: tt0000003 short Pauvre Pierrot Pauvre Pierrot 0 1892 NA
4: tt0000004 short Un bon bock Un bon bock 0 1892 NA
5: tt0000005 short Blacksmith Scene Blacksmith Scene 0 1893 NA
6: tt0000006 short Chinese Opium Den Chinese Opium Den 0 1894 NA
runtimeMinutes genres
1: 1 Documentary,Short
2: 5 Animation,Short
3: 4 Animation,Comedy,Romance
4: NA Animation,Short
5: 1 Comedy,Short
6: 1 Short
如您所知,R
中的 read.table
是一个非常有用但速度较慢的函数,尤其是在读取大型数据库时。为了解决与该功能相关的问题,存在 readr
和 data.table
包中的 read_table
和 fread
等功能。不幸的是,他们的论点与 read.table
不同,这让我很难复制这个例子:
download.file("https://datasets.imdbws.com/title.basics.tsv.gz", "mov_title")
download.file("https://datasets.imdbws.com/title.ratings.tsv.gz", "mov_rating")
title <- read.table("mov_title", sep="\t", header=TRUE,
fill=TRUE, na.strings="\N", quote="")
rating <- read.table("mov_rating", sep="\t", header=TRUE,
fill=TRUE, na.strings="\N", quote="")
基本上,我想使用 fread
或 read_table
(或者如果可能的话两者都使用)来创建我的 "title" 和 "rating" 数据库。任何建议或参考将不胜感激。
这似乎工作得很好...data.table::fread()
可以处理 gz-files。
设置 \t
(=tab) 作为分隔符。
由于一些 movie-titles 包含引号,请将引号设置为空; quote = ""
。 (或者不接受,只接受警告)。
library( data.table )
title <- fread( "https://datasets.imdbws.com/title.basics.tsv.gz",
sep = "\t", quote = "" )
rating <- fread( "https://datasets.imdbws.com/title.ratings.tsv.gz",
sep = "\t", quote = "" )
fread 支持 .gz 文件以及从 url 读取。您可以保持其余参数与 read.table
中的参数相同library(data.table)
title=fread("https://datasets.imdbws.com/title.basics.tsv.gz",sep = "\t",quote = "",na.strings = "\N",header = T,fill = T)
> dim(title)
[1] 6518809 9
>
>
> head(title)
tconst titleType primaryTitle originalTitle isAdult startYear endYear
1: tt0000001 short Carmencita Carmencita 0 1894 NA
2: tt0000002 short Le clown et ses chiens Le clown et ses chiens 0 1892 NA
3: tt0000003 short Pauvre Pierrot Pauvre Pierrot 0 1892 NA
4: tt0000004 short Un bon bock Un bon bock 0 1892 NA
5: tt0000005 short Blacksmith Scene Blacksmith Scene 0 1893 NA
6: tt0000006 short Chinese Opium Den Chinese Opium Den 0 1894 NA
runtimeMinutes genres
1: 1 Documentary,Short
2: 5 Animation,Short
3: 4 Animation,Comedy,Romance
4: NA Animation,Short
5: 1 Comedy,Short
6: 1 Short