2016年12月28日水曜日

外部とのデータのやりとり

 R にデータを取り込んだり、その逆をする方法です。いろいろなケースがありますが、代表的で使いやすい、csvファイルによる方法と、クリップボードを経由する方法の2つを紹介します。


csv は comma-separated values の略で、コンマ(,)で区切られた値という意味です。
データフレームをcsvファイルにしたり、その逆をします。
> d
  sex  w   h
1   F 45 150
2   F 48 151
3   M 55 160
4   M 54 163
5   F 50 155
> write.csv(d,"data.csv",row.names=FALSE)
データフレーム d を "data.csv" という名前で書き出しました。
書き出されたファイルは単なるテキストファイルですが、拡張子はcsvにしておくのがよいでしょう。
書き出されたファイルは以下のようになっています。
"sex","w","h"
"F",45,150
"F",48,151
"M",55,160
"M",54,163
"F",50,155


書き出したcsv ファイルを、変数 e に読み込みます。
> e=read.csv("data.csv")
> e
  sex  w   h
1   F 45 150
2   F 48 151
3   M 55 160
4   M 54 163
5   F 50 155



つぎに、クリップボード経由でやり取りする方法を述べます。

クリップボードはコンピュータの基本機能です。コピーするとクリップボードに保管されます。貼り付けるとクリップボードの内容が貼り付きます。

想定しているのは、excelで作業しているデータを取り込むことです。

 excelで、必要な範囲を選択し、コピーします。excelでのコピーはCtrlキーとCキーを一緒に押すなどの方法があります。
そのあと、Rで
> x = read.table("clipboard",header=TRUE)
1行目が項目なので、header=TRUE を付けます。
> x
   a  b
1 34 66
2 12 27

逆に、変数xの内容をクリップボードにコピーするには
write.table(x , "clipboard" , sep="\t" , row.names = FALSE )
となります。このようにコピーして、excelで貼り付ければOKです。

sepは区切り文字の指定です。separator の意味です。csvファイルのセパレータはコンマでしたが、excelでのコピー・貼り付けではセパレータは「タブ」といわれる一種の文字です。"\t"はこの「タブ」
といわれる文字を表します。

row.namesのデフォルトはTRUEで、行名を勝手につけてしまうので、それを抑制しました。

0 件のコメント:

コメントを投稿