エクセルからデータをカット&ペースト     Last modified: Dec 12, 2006

 エクセルのデータ,特に一部分のデータを R に持ってくるためには,エクセルのデータ範囲をコピーして,テキストエディタなどにペーストして,保存して,それを読み込んでと面倒くさいし余分なファイルができるのもいや。

Mac の場合には,クリップボードにコピーした後,

d <- read.table(pipe("pbpaste"))
とすれば,以下に書いたような面倒なこと(ペースト)をしないで済む。

面倒な方法

 以下に前に書いたことを発展させて,データフレームに読み込む方がよい。以下に示すように,変数名も含めて範囲をコピーする。

 > x <- read.table(stdin(), header=TRUE) # 入力元に stdin() を指定する
 0: x	y	z         0: が表示されたらペースト
 1: 1	1	1
 2: 2	1.414213562	4
 3: 3	1.732050808	9
 4: 4	2	16
 5: 5	2.236067977	25
 6:                入力が尽きたら,リターンキーを押す
 > x
   x        y  z                  データフレームの出来上がり
 1 1 1.000000  1
 2 2 1.414214  4
 3 3 1.732051  9
 4 4 2.000000 16
 5 5 2.236068 25
Windows の場合には,stdin() ではなくて,"clipboard" を指定し,前もってコピーしてから read.table をやる。


前に書いていたもの

 そんなときに,scan 関数を使うとよい。

 関数を定義後,ワークスペースに保存しておくと,R を始める前に毎回これを読んでくれるので以後は関数の定義をすることなくいつでも使える。

関数の定義

★ Windows の場合

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/excel-w.R", encoding="euc-jp")

excel.w <- function(nc)
{
        matrix(scan("clipboard", quiet=TRUE), byrow=TRUE, ncol=nc)
}


使い方

1: Excel の,必要なデータ範囲をコピーする
2: excel.w 関数を起動する
   引数は,列数を表す数値一つだけ
   x <- excel.w(4)
これだけ!

★ Macintosh の場合

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/excel.R", encoding="euc-jp")

excel <- function(nc)
{
        matrix(scan("", quiet=TRUE), byrow=TRUE, ncol=nc)
}


使い方

1: Excel の,必要なデータ範囲をコピーする
2: excel 関数を起動する
   引数は,列数を表す数値一つだけ
   x <- excel(4)
3: データ入力プロンプトが出たら,ペーストする
4: データが読みとられても,さらなるプロンプトが出るので,
   データの終わりを示すために
   command + .
   の後,リターンキーを押す


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh