今日のお話はここ
R で分析するためには、データを R に読み込まなければなりません。
(データ分析の方針がだいたい決まったので)
あなた「(上司)さん、R の環境整えたんでデータください!」
上司「OK、購買データはあの tsvファイルで、商品マスタはあっちの csv。それぞれ 100MB くらいだったかな。それと EC サイトのアクセスログは データベースにあって、データ定義は エクセルで来てるからあとで送るね。」
あなた「りょ、了解です。(データ形式くらい統一しとけよ…)」
setwd()
を書く必要はありませんreadr パッケージの read_csv 関数を使いたいとき
# 方法 1
library(readr)
dat <- read_csv("hoge.csv")
# 方法 2
dat <- readr::read_csv("hoge.csv")
read.csv()
dat <- read.csv("sample.csv", stringAsFactors = FALSE)
readr::read_csv()
library(readr)
dat <- read_csv("sample.csv")
data.table::fread()
readr::read_csv
よりも高速data.table = FALSE
library(data.table)
dat <- fread("sample.csv", data.table = FALSE)
system.time(dat <- read.csv("./data/log.csv"))
user system elapsed
55.032 0.874 56.872
system.time(dat2 <- readr::read_csv("./data/log.csv"))
user system elapsed
3.602 0.177 3.808
system.time(dat3 <- data.table::fread("./data/log.csv"))
Read 66.8% of 3460200 rows
Read 3460193 rows and 5 (of 5) columns from 0.477 GB file in 00:00:03
user system elapsed
2.413 0.131 2.561
read.delim()
read.delim()
は区切り値のファイルを読む標準関数read.csv()
は sep = ","
をつけたものdat <- read.delim("sample.tsv", stringAsFactors = FALSE)
readr::read_tsv()
library(readr)
dat <- read_tsv("sample.tsv")
data.table::fread()
library(data.table)
dat <- fread("sample.tsv", data.table = FALSE)
read.delim()
dat <- read.delim("sample.tsv", stringAsFactors = FALSE, sep = "|")
readr::read_delim()
library(readr)
dat <- read_delim("sample.tsv", "|")
data.table::fread()
library(data.table)
dat <- fread("sample.tsv", data.table = FALSE)
read_***()
関数が一番オススメread.*** | read_*** | fread | |
---|---|---|---|
速さ(500MB) | 約 1 分 | 8 秒 | 3 秒 |
区切り地値の判定ミス | × | × | △ |
エンコーディング | ○ | ○ | △ |
dat <- readxl::read_excel("sample.xlsx", sheet = "シート名")
# シート名はシート番号でも OK
haven パッケージで読み込み
dat <- haven::read_sas("sample.sas7bdat")
dat <- haven::read_dta("sample.dta")
dat <- haven::read_sav("sample.sav")
Encoding=cp932
Encoding=UTF8
dat <- read.csv("sample.csv", stringAsFactors = FALSE, fileEncoding = "cp932")
dat <- readr::read_csv("sample.csv", locale = locale(encoding = "cp932"))
dat <- data.table::fread("sample.csv", data.table = FALSE) %>%
dplyr::mutate(VAR1 = iconv(VAR1, from = "UTF8", to = "CP932"))
気になる方は rvestやRSelenium、rtweetパッケージを検索!
ググると、意外といろいろ出てきます
下記 URL でソースコードを公開しています