Rでコマンド:データ変形のコマンド例


同じ変数と測定タイミングが異なるデータを1行にまとめるコマンドの紹介です。「tidyr」パッケージを利用すると簡単です。

この紹介は「Rで解析:CSVファイルをまとめて読み込み「readbulk」パッケージ」をご覧になられた方からの質問です。非常にわかりやすい質問で、多くの方の役に立ちそうなので記事にしました。ご質問ありがとうございました。

なお、「readbulk」パッケージはフォルダ内の全CSVを読み込む便利なパッケージです。ただし、1ファイル毎にデータが読み込まれるためファイル数分のNA列が発生します。そんな問題を解決するコマンドの紹介です。

・Rで解析:CSVファイルをまとめて読み込み「readbulk」パッケージ
 https://www.karada-good.net/analyticsr/r-338/

<処理データの例>
extidyr

実行コマンドはwindows 7およびOS X 10.11.2のR version 3.2.3で確認しています。


実行コマンド

詳細はコメント、各パッケージのヘルプを確認してください。なお、実行コマンドではcsvファイルを読み込み処理した例です。

#CSVファイルを読み込む:read.csvコマンド
library("tcltk")
#日本語を含む場合はfileEncoding="CP932"を追加
#NAの文字列を"NA"値に指定
selectACsv <- paste(as.character(tkgetOpenFile(title = "csvファイルを選択",filetypes = '{"csvファイル" {".csv"}}',initialfile = "*.csv")), sep = "", collapse =" ") ReadData <- read.csv(selectACsv, header = TRUE, sep = ",", na.strings = "NA", stringsAsFactors = FALSE, fileEncoding = "CP932") ######## #データ確認 ReadData ban term T_1 T_2 T_3 T_4 T_5 1 1 A 0.099999999 NA NA NA NA 2 261 A NA 0.000999999 NA NA NA 3 452 A NA NA 0.000999999 NA NA 4 676 A NA NA NA 0.000999999 NA 5 875 A NA NA NA NA 0.000999999 ###データを整形##### #tidyrパッケージを利用 library("tidyr") #パイプ「%>%」ごとの処理内容 #banデータを削除 #「gather」コマンドでtermを基準にデータを縦に並べる #「spread」コマンドでketに横方向に並べる変数データ列を指定,valueに値列を指定 ResultData <- ReadData[, -1] %>% gather(key = time, value = Value, -term, na.rm = TRUE) %>% spread(key = time, value = Value) #確認 ResultData  term T_1 T_2 T_3 T_4 T_5 1 A 0.09999999 0.09999999 0.09999999 0.09999999 0.09999999 [/code]


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

関連コンテンツ


スポンサードリンク