エクセルデータをクリップボードにコピーしてR環境に読み込む
今までほぼやってなかったけど、さっき使ってみて思いの外、便利でよかったです。 今後はこれを使いたいと強いメッセージを込めて、これのみでメモっておきます。
まずは、Macでエクセルを起動します。
文字や数字が書かれた、エクセルの任意のセルを選択して、command + c
でコピーします。
Rを起動して、以下のコマンドを打てば*1、クリップボードからデータのインポートができます。
ただ、以下のコード実行前に、command + c
をもう一度打たないこと。
コピーしたデータがクリップボードから消えます。癖で打ってしまいそうになりますけど。。。
コピーしたセルがヘッダーを含む場合
Data <- read.table(pipe("pbpaste"), header=T, stringsAsFactors = F) Data # OR Data <- read.table(pipe("pbpaste"), sep="\t", header=T, stringsAsFactors = F) Data
コピーしたセルがヘッダーを含まない場合
Data <- read.table(pipe("pbpaste"), header=F, stringsAsFactors = F) Data # OR Data <- read.table(pipe("pbpaste"), sep="\t", header=F, stringsAsFactors = F) Data
追記(2020年6月10日): マークダウンなどでテーブル出力
実際に、クリップボードからR上にインポートして、 データフレームをBlog用のマークダウンなどでテーブル出力するのをやってみました。
エクセルで、以下の画像のようにセルをcommand + c でコピーしてみます。
エクセルを閉じずに、そのまま、以下のRコードを実行します。
if(!require("knitr")){install.packages("knitr")}; library(knitr) Data <- read.table(pipe("pbpaste"), header=T, stringsAsFactors = F) Data # A B C D #1 1 2 3 4 #2 1 3 5 7 #3 2 5 8 11 #4 3 6 9 12 #5 4 7 10 13 #マークダウン出力 kable(Data, format = "markdown") #| A| B| C| D| #|--:|--:|--:|--:| #| 1| 2| 3| 4| #| 1| 3| 5| 7| #| 2| 5| 8| 11| #| 3| 6| 9| 12| #| 4| 7| 10| 13| #Latex出力 kable(Data, format = "latex") #\begin{tabular}{r|r|r|r} #\hline #A & B & C & D\\ #\hline #1 & 2 & 3 & 4\\ #\hline #1 & 3 & 5 & 7\\ #\hline #2 & 5 & 8 & 11\\ #\hline #3 & 6 & 9 & 12\\ #\hline #4 & 7 & 10 & 13\\ #\hline #\end{tabular} #Pandoc出力 kable(Data, format = "pandoc") # A B C D #--- --- --- --- # 1 2 3 4 # 1 3 5 7 # 2 5 8 11 # 3 6 9 12 # 4 7 10 13
【Rのジミ〜な小技シリーズ】
参考資料
http://marcoghislanzoni.com/blog/2013/10/27/import-data-r-mac-os-x-clipboard/marcoghislanzoni.com
*1:R4.0以降は大丈夫だが、 stringsAsFactors = F は念のためいれておくこと