Rで回帰分析のsummaryの結果を csvやexcelに出力したい

R/Rstudio

回帰分析の結果をExcelで抽出したい

Rのlm関数で出力した結果をもとに表を作りたいときに、個々の値を1つずつコピペするのめんどくさいです。

例えば、以下のような重回帰分析の結果の係数(Estimate)が出力されて、その値が欲しいとします。

重回帰分析用データは適当に数値入れて作ったので意味はありません。


summary()をそのままcsvとして出そうとしても以下のようなエラーが出ます。

> write.csv(res,"result.csv")
Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : 
  cannot coerce class ‘"summary.lm"’ to a data.frame

このエラーが出る理由、summaryで出力されるデータには、係数の情報以外にもいろんな情報が入ってるのでそのままではcsvやexcelに出力できないのだと思います。
パッと回帰係数とか必要な情報だけが欲しいので、データフレームにして並べてごにょごにょしたいわけではないなぁ、どうにか楽に取り出すには…と、一瞬つまづいて時間ロスがあったので、忘れないように、備忘録もかねてここに記事として残そうと思いました。

csvに出力するには必要な要素だけを取り出せばよい

というわけで、summary()で出力される値をExcelに抽出するには、必要な要素だけを選択してあげる必要があります。
例えば、重回帰分析の結果であれば、summary()で出力される中で必要なものは、回帰係数やp値あたりです。
これらの要素は $coefficient で取り出すことができます。

$coefficients で係数の情報やt値やp値の結果などが取れます。

こちらをcsvに抽出する引数として入れてあげれば良いです。

coef<-res$coefficients #係数をcoefに入れた
write.csv(coef,"coef.csv")

うまく出力されました。

この結果を使えばコピペですぐに表を作ることができそうです。

また、重回帰分析の場合は決定係数、95%信頼区間も報告が求められることが多いです。
その場合は、それぞれをシートごとに入れてあげれば後で見やすそうです。
各要素のデータをリストとして渡してあげて、それをエクセルに書き込むことでその目的を達成することができます。
複数シートに出力結果を入れる結果はこちらが参考になります。

理想は図表づくりも含めて何から何までR上で作業できれば良いのですが、はじめのうちはExcelに出力して、その値をもとに図表を手作りしてもよいと思います。
以上、最近やりかたを忘れていて一瞬作業停滞気味だったので、忘れないように備忘録としてまとめてみました。

タイトルとURLをコピーしました