0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

フォルダ内のファイルを自動で結合するRのコード

Last updated at Posted at 2023-08-20

背景

 コンピュータプログラムを使って実験を行った際に、参加者一人一人のデータを、csvやtxtファイルで出力する場合があると思います。データ分析する際に、このばらばらのデータを一つのデータセットにまとめてRに読み込む方法を紹介します。

手順

データ

例えば、以下のような形式でデータが記録されたcsvファイルが複数あるとします。
image.png

手順

  • 必要なパッケージのインストール
utilsパッケージ
→ read.csv関数、write.table関数を使うのに必要
  • ファイルがあるディレクトリを選び、そのディレクトリのファイルをすべて指定します。patternという引数もあり、ここで正規表現を使えます。例えば、ドキュメントフォルダにある、"Japanese"という名前を含んでいるファイルのみを取得したい場合の例は以下です。
    pattern = ".pdf"のように指定すれば、PDFファイルだけ取得できます。
setwd("C:/Users/mt/Documents")
file_list <- list.files(pattern = "Japanese") 

ちなみに、list.files関数にpathという引数を指定すれば、一行で書けます。

file_list <- list.files(path = "C:/Users/mt/Documents",
                        pattern = "Japanese")
  • 次に示すスクリプトを実行するだけで結合できます
#結合開始
bind_data <- NULL
for (i in 1:length(file_list)){   #一つ一つ、ファイルの数だけ結合する
csv_data<-read.csv(file_list[i])
bind_data<-rbind(bind_data, sapply(csv_data, as.character))
}

追記(2023/08/20)

X(旧twitter)にて、より短いコードで、より高速に実行できる、read_csv関数を教えていただきました。

ボブさん、ありがとうございます。
library(tidyverse)
bind_data <- readr::read_csv(file_list, id = "file_name")

image.png

データセットの完成です。あとはそのまま分析するだけ。

データセットの保存方法

任意のファイル形式で作成したデータセットを保存できます。

write.table(bind_data, 
            "好きなファイル名.csv", #.csvという拡張子を忘れない
            sep = "\t", #タブで区切られているデータ。区切りごとに変える必要あり
            quote = FALSE, 
            row.names = FALSE)  #データの型で関数(write.table)変える必要あり

ちなみに、保存先を指定することができます。例えば、"好きなファイル名.csv"のファイル名の前に、絶対パスを指定する方法があります。以下のように指定すると、新しく作成したファイルがドキュメントに保存されます。

write.table(bind_data, 
            "C:/Users/mt/Documents/好きなファイル名.csv", 
            sep = "\t", 
            quote = FALSE, 
            row.names = FALSE)  

# 最後に
改善点の一つとして、とてつもなく大量のデータがある場合、forを使うループはかなり時間がかかってしまいます。for文を使わずに同じことができる方法を探ることがあげられます。

参考:# 追記(2023/08/20)

参考資料

ファイル読み込み色々【R言語・小技】

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?