library(readxl)
df_a <-
read_excel("data/データ.xlsx")
df_a
## # A tibble: 9 x 3
## 名前 学年 身長
## <chr> <dbl> <dbl>
## 1 高海 2 157
## 2 桜内 2 160
## 3 松浦 3 162
## 4 黒澤 3 162
## 5 渡辺 2 157
## 6 津島 1 156
## 7 国木田 1 152
## 8 小原 3 163
## 9 黒澤 1 154
readxl::excel_sheets
excel_sheets("data/データ.xlsx")
## [1] "Aqours" "μ's"
df_m <-
read_excel("data/データ.xlsx", sheet = "μ's" )
df_m
## # A tibble: 9 x 3
## 名前 学年 身長
## <chr> <dbl> <dbl>
## 1 高坂 2 157
## 2 絢瀬 3 162
## 3 南 2 159
## 4 園田 2 159
## 5 星空 1 155
## 6 西木野 1 161
## 7 東條 3 159
## 8 小泉 1 156
## 9 矢澤 3 154
library(tidyverse)
library(janitor) # clean_names()を使うため
path_name <- "data/データ.xlsx" # データのパスを格納
# シート名を取得しそれぞれから読み込んでリストにまとめる
df_all <-
excel_sheets(path_name) %>% # すべてのシートから読む方法(helpより)
set_names() %>% # 名前付きベクトルにする、↓で作成されるリストの要素名にもなる
map(read_excel, path = path_name) %>%
map(clean_names, case = "old_janitor") # エラーになる文字を自動で整形。日本語の場合,case = "old_janitor"を引数に入れた方がいい場合も
# 読みこんだデータ全体の構造を表示
str(df_all)
## List of 2
## $ Aqours: tibble [9 x 3] (S3: tbl_df/tbl/data.frame)
## ..$ 名前: chr [1:9] "高海" "桜内" "松浦" "黒澤" ...
## ..$ 学年: num [1:9] 2 2 3 3 2 1 1 3 1
## ..$ 身長: num [1:9] 157 160 162 162 157 156 152 163 154
## $ μ's : tibble [9 x 3] (S3: tbl_df/tbl/data.frame)
## ..$ 名前: chr [1:9] "高坂" "絢瀬" "南" "園田" ...
## ..$ 学年: num [1:9] 2 3 2 2 1 1 3 1 3
## ..$ 身長: num [1:9] 157 162 159 159 155 161 159 156 154
library(writexl)
imap(df_all, ~write_xlsx(.x, path = str_c("result/",.y , ".xlsx")))
.id =
で、リストの要素名を変数の値として入れられるbind_rows(df_all, .id = "group")
## # A tibble: 18 x 4
## group 名前 学年 身長
## <chr> <chr> <dbl> <dbl>
## 1 Aqours 高海 2 157
## 2 Aqours 桜内 2 160
## 3 Aqours 松浦 3 162
## 4 Aqours 黒澤 3 162
## 5 Aqours 渡辺 2 157
## 6 Aqours 津島 1 156
## 7 Aqours 国木田 1 152
## 8 Aqours 小原 3 163
## 9 Aqours 黒澤 1 154
## 10 μ's 高坂 2 157
## 11 μ's 絢瀬 3 162
## 12 μ's 南 2 159
## 13 μ's 園田 2 159
## 14 μ's 星空 1 155
## 15 μ's 西木野 1 161
## 16 μ's 東條 3 159
## 17 μ's 小泉 1 156
## 18 μ's 矢澤 3 154
files <-
list.files(path = "result/", full.names = TRUE) # resultフォルダから
ldata <-
map(files, ~read_xlsx(.))
file_name <-
str_replace(files, ".xlsx", "") %>%
str_replace("result/", "")
ldata <-
set_names(ldata, file_name)
bind_rows(ldata, .id = "group")
## # A tibble: 18 x 4
## group 名前 学年 身長
## <chr> <chr> <dbl> <dbl>
## 1 Aqours 高海 2 157
## 2 Aqours 桜内 2 160
## 3 Aqours 松浦 3 162
## 4 Aqours 黒澤 3 162
## 5 Aqours 渡辺 2 157
## 6 Aqours 津島 1 156
## 7 Aqours 国木田 1 152
## 8 Aqours 小原 3 163
## 9 Aqours 黒澤 1 154
## 10 μ's 高坂 2 157
## 11 μ's 絢瀬 3 162
## 12 μ's 南 2 159
## 13 μ's 園田 2 159
## 14 μ's 星空 1 155
## 15 μ's 西木野 1 161
## 16 μ's 東條 3 159
## 17 μ's 小泉 1 156
## 18 μ's 矢澤 3 154
readr::read_csv()
は,utf-8でエンコードされたファイルが前提library(readr)
read_csv("data/データ(UTF-8).csv")
## # A tibble: 9 x 3
## 名前 学年 身長
## <chr> <dbl> <dbl>
## 1 高海 2 157
## 2 桜内 2 160
## 3 松浦 3 162
## 4 黒澤 3 162
## 5 渡辺 2 157
## 6 津島 1 156
## 7 国木田 1 152
## 8 小原 3 163
## 9 黒澤 1 154
clean_names()
で読める形式に変換しているread_csv("data/データ(SHIT-JIS).csv") %>%
clean_names(case = "old_janitor")
## # A tibble: 9 x 3
## x_u_0096_u_00bc_u_0091_o x_u_008a_w_u_0094_n x_u_0090_g_u_0092_u_00b7
## <chr> <dbl> <dbl>
## 1 "\x8d\x82\x8aC" 2 157
## 2 "\x8d\xf7\x93\xe0" 2 160
## 3 "\x8f\xbc\x89Y" 3 162
## 4 "\x8d\x95\xe0V" 3 162
## 5 "\x93n\x95\xd3" 2 157
## 6 "\x92\xc3\x93\x87" 1 156
## 7 "\x8d\x91\x96\xd8\x93c" 1 152
## 8 "\x8f\xac\x8c\xb4" 3 163
## 9 "\x8d\x95\xe0V" 1 154
read_csv("data/データ(SHIT-JIS).csv", locale = locale(encoding = "cp932") )
## # A tibble: 9 x 3
## 名前 学年 身長
## <chr> <dbl> <dbl>
## 1 高海 2 157
## 2 桜内 2 160
## 3 松浦 3 162
## 4 黒澤 3 162
## 5 渡辺 2 157
## 6 津島 1 156
## 7 国木田 1 152
## 8 小原 3 163
## 9 黒澤 1 154
read.csv()
を使えば,デフォルトでSHIT-JISのファイルは読めるread.csv("data/データ(SHIT-JIS).csv")
## 名前 学年 身長
## 1 高海 2 157
## 2 桜内 2 160
## 3 松浦 3 162
## 4 黒澤 3 162
## 5 渡辺 2 157
## 6 津島 1 156
## 7 国木田 1 152
## 8 小原 3 163
## 9 黒澤 1 154
read.csv("data/データ(UTF-8).csv", encoding = "UTF-8")
## X.U.FEFF.名前 学年 身長
## 1 高海 2 157
## 2 桜内 2 160
## 3 松浦 3 162
## 4 黒澤 3 162
## 5 渡辺 2 157
## 6 津島 1 156
## 7 国木田 1 152
## 8 小原 3 163
## 9 黒澤 1 154
fread()
を使えば,デフォルトでSHIT-JISのファイルは読めるlibrary(data.table)
fread("data/データ(SHIT-JIS).csv") %>%
as_tibble() # tibble形式に変換
## # A tibble: 9 x 3
## 名前 学年 身長
## <chr> <int> <int>
## 1 高海 2 157
## 2 桜内 2 160
## 3 松浦 3 162
## 4 黒澤 3 162
## 5 渡辺 2 157
## 6 津島 1 156
## 7 国木田 1 152
## 8 小原 3 163
## 9 黒澤 1 154
fread("data/データ(UTF-8).csv", encoding = "UTF-8") %>%
as_tibble()
## # A tibble: 9 x 3
## 名前 学年 身長
## <chr> <int> <int>
## 1 高海 2 157
## 2 桜内 2 160
## 3 松浦 3 162
## 4 黒澤 3 162
## 5 渡辺 2 157
## 6 津島 1 156
## 7 国木田 1 152
## 8 小原 3 163
## 9 黒澤 1 154
iris_list <-
split(iris, iris$Species)
write_xlsx(iris_list, "data/iris.xlsx")
rm(iris_list) # いったん削除