{"id":770,"date":"2015-02-22T17:11:36","date_gmt":"2015-02-23T00:11:36","guid":{"rendered":"http:\/\/homepages.uc.edu\/~yaozo\/wordpress\/?p=770"},"modified":"2015-02-22T17:11:36","modified_gmt":"2015-02-23T00:11:36","slug":"read-excel-files-from-r","status":"publish","type":"post","link":"https:\/\/zhuoyao.net\/index.php\/2015\/02\/22\/read-excel-files-from-r\/","title":{"rendered":"Read Excel files from R"},"content":{"rendered":"<p>Many people still save their data into Microsoft Excel files. This is an unhappy choice for many reasons but many was already written about this topic. Furthermore, unfortunately Excel become a <em>de facto<\/em> standard in many business environment and this routine seems to be difficult to strike out.<\/p>\n<p>Many solutions have been implemented to read Excel files from R: each one has advantages and disadvantages, so an universal solution is not available. Get an overview of all the solutions, allows the choice of the best solution case-by-case.<\/p>\n<h3>Save Excel files into text<\/h3>\n<p>Saving Excel files into CSV can be done directly from Excel or through some external tools that allows batch operations. Native R functions for text data import can so be used.<\/p>\n<div id=\"crayon-54ea6e1e56797498632467\" class=\"crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<pre class=\"crayon-plain-wrap\">\u00a0<span class=\"crayon-v\">df<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">read<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">table<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">\"myfile.csv\"<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">header<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-t\">TRUE<\/span><span class=\"crayon-sy\">)<\/span><\/pre>\n<div class=\"crayon-main\">Copy and paste from Excel to R<\/div>\n<\/div>\n<p>This is a fast solutions, but it has one main drawbacks: it requires to open Excel file, select data and copy. By the way, this is the best compromise when you&#8217;re in a hurry.<\/p>\n<div id=\"crayon-54ea6e1e567a9549692211\" class=\"crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<pre class=\"crayon-plain-wrap\">\u00a0<span class=\"crayon-v\">df<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">read<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">table<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">\"clipboard\"<\/span><span class=\"crayon-sy\">)<\/span><\/pre>\n<div class=\"crayon-main\">ODBC connection<\/div>\n<\/div>\n<p>For many years this was the easiest solutions based on R code for Windows users. Nowadays it still support only 32 bit versions of R and this limit discourage the use of this package. Besides Microsoft Windows and 32-bit R, it requires the Excel ODBC driver installed.<\/p>\n<div id=\"crayon-54ea6e1e567b5715255827\" class=\"crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\">\n<pre id=\"crayon-54ea6e1e567b5715255827-1\" class=\"crayon-line\"><span class=\"crayon-r\">require<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">RODBC<\/span><span class=\"crayon-sy\">)\n<\/span><span class=\"crayon-v\">conn<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">odbcConnectExcel<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">\"myfile.xlsx\"<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-c\"># open a connection to the Excel file\n<\/span><span class=\"crayon-e\">sqlTables<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">conn<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">$<\/span><span class=\"crayon-i\">TABLE_NAME<\/span> <span class=\"crayon-c\"># show all sheets\n<\/span><span class=\"crayon-v\">df<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">sqlFetch<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">conn<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">\"Sheet1\"<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-c\"># read a sheet\n<\/span><span class=\"crayon-v\">df<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">sqlQuery<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">conn<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-s\">\"select * from [Sheet1 $]\"<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-c\"># read a sheet (alternative SQL sintax)\n<\/span><span class=\"crayon-e\">close<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">conn<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-c\"># close the connection to the file<\/span><\/pre>\n<\/div>\n<div class=\"crayon-main\"><code>gdata<\/code> package<\/div>\n<\/div>\n<p>In my experience the function provided by gdata package provides a good cross platform solutions. It is available for Windows, Mac or Linux. gdata requires you to install additional Perl libraries. Perl is usually already installed in Linux and Mac, but sometimes require more effort in Windows platforms.<\/p>\n<div id=\"crayon-54ea6e1e567be838391339\" class=\"crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567be838391339-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-54ea6e1e567be838391339-2\">2<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-54ea6e1e567be838391339-1\" class=\"crayon-line\"><span class=\"crayon-r\">require<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">gdata<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567be838391339-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">df<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">read<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">xls<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;myfile.xlsx&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">sheet<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">header<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-t\">TRUE<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3><code>xlsReadWrite<\/code> package<\/h3>\n<p><code>xlsReadWrite<\/code> is reported here for didactically purposes only although it is very fast: it doesn&#8217;t support .xlsx files and this is not acceptable nowadays. Furthermore, it uses proprietary third party code and it should be downloaded from GitHub, CRAN cannot host it. It is available for Windows only.<\/p>\n<div id=\"crayon-54ea6e1e567c6152926997\" class=\"crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567c6152926997-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-54ea6e1e567c6152926997-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567c6152926997-3\">3<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-54ea6e1e567c6152926997-1\" class=\"crayon-line\"><span class=\"crayon-r\">require<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">xlsReadWrite<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567c6152926997-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">xls<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">getshlib<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567c6152926997-3\" class=\"crayon-line\"><span class=\"crayon-v\">df<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">read<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">xls<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;myfile.xls&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">sheet<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3><code>XLConnect<\/code> package<\/h3>\n<p><code>XLConnect<\/code> is a Java-based solution, so it is cross platform and returns satisfactory results. For large data sets it may be very slow.<\/p>\n<div id=\"crayon-54ea6e1e567ce226947373\" class=\"crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567ce226947373-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-54ea6e1e567ce226947373-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567ce226947373-3\">3<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-54ea6e1e567ce226947373-1\" class=\"crayon-line\"><span class=\"crayon-r\">require<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">XLConnect<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567ce226947373-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">wb<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">loadWorkbook<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;myfile.xlsx&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567ce226947373-3\" class=\"crayon-line\"><span class=\"crayon-v\">df<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">readWorksheet<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">wb<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">sheet<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;Sheet1&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">header<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-t\">TRUE<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3><code>xlsx<\/code> package<\/h3>\n<p><code>xlsx<\/code> package read (and write) .xlsx and .xls files using Java. It is cross platform and uses rJava to deal with Java. Comments and examples below are taken from <a href=\"http:\/\/stackoverflow.com\/questions\/6099243\/read-an-excel-file-directly-from-a-r-script\">a stackoverflow answer<\/a>. It probably returns the best results but requires some more options.<\/p>\n<p>However, <code>read.xlsx()<\/code> function may be slow, when opening large Excel files. <code>read.xlsx2()<\/code> function is considerably faster, but does not quess the vector class of <code>data.frame<\/code> columns. You have to use<code>colClasses()<\/code> command to specify desired column classes, if you use <code>read.xlsx2()<\/code> function:<\/p>\n<ul>\n<li>read.xlsx(&#8220;filename.xlsx&#8221;, 1) reads your file and makes the data.frame column classes nearly useful, but is very slow for large data sets.<\/li>\n<li>read.xlsx2(&#8220;filename.xlsx&#8221;, 1) is faster, but you will have to define column classes manually. A shortcut is to run the command twice. <code>character<\/code> specification converts your columns to factors. Use <code>Date<\/code> and<code>POSIXct<\/code> options for time.<\/li>\n<\/ul>\n<div id=\"crayon-54ea6e1e567d7020080023\" class=\"crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567d7020080023-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-54ea6e1e567d7020080023-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567d7020080023-3\">3<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-54ea6e1e567d7020080023-1\" class=\"crayon-line\"><span class=\"crayon-r\">require<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">xlsx<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567d7020080023-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">read<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">xlsx<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;myfile.xlsx&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">sheetName<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;Sheet1&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567d7020080023-3\" class=\"crayon-line\"><span class=\"crayon-v\">read<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">xlsx2<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;myfile.xlsx&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">sheetName<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;Sheet1&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div id=\"crayon-54ea6e1e567e0399013130\" class=\"crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567e0399013130-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-54ea6e1e567e0399013130-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567e0399013130-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-54ea6e1e567e0399013130-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567e0399013130-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-54ea6e1e567e0399013130-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567e0399013130-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-54ea6e1e567e0399013130-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567e0399013130-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-54ea6e1e567e0399013130-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567e0399013130-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-54ea6e1e567e0399013130-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567e0399013130-13\">13<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-54ea6e1e567e0399013130-1\" class=\"crayon-line\"><span class=\"crayon-r\">require<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">xlsx<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">coln<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-t\">function<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">x<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-sy\">{<\/span> <span class=\"crayon-c\"># A function to see column numbers<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-3\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">y<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">rbind<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">seq<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">ncol<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">x<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">colnames<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">y<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">colnames<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">x<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-5\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">rownames<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">y<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-s\">&#8220;col.number&#8221;<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">return<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">y<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-7\" class=\"crayon-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">data<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">read<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">xlsx2<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;myfile.xlsx&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-c\"># open the file <\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-9\" class=\"crayon-line\"><span class=\"crayon-e\">coln<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">data<\/span><span class=\"crayon-sy\">)<\/span> <span class=\"crayon-c\"># check the column numbers you want to have as factors<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">x<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">3<\/span> <span class=\"crayon-c\"># Say you want columns 1-3 as factors, the rest numeric<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-11\" class=\"crayon-line\"><span class=\"crayon-v\">data<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">read<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">xlsx2<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;myfile.xlsx&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">,<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">colClasses<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">c<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">rep<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;character&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">x<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">rep<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;numeric&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">ncol<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">data<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-i\">x<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-cn\">1<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e0399013130-13\" class=\"crayon-line\"><span class=\"crayon-sy\">)<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>A self made function<\/h3>\n<p>Finally, I found <a href=\"http:\/\/housesofstones.com\/blog\/2013\/06\/20\/quickly-read-excel-xlsx-worksheets-into-r-on-any-platform\/\">on the web<\/a> a self made function to easily import xlsx files. It should work in all platforms and use XML. It doesn&#8217;t work with old .xls files. It allows to read more sheets of a file in the same time, using the<code>keep_sheets<\/code> argument.<\/p>\n<div id=\"crayon-54ea6e1e567e8279671840\" class=\"crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-54ea6e1e567e8279671840-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-54ea6e1e567e8279671840-2\">2<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-54ea6e1e567e8279671840-1\" class=\"crayon-line\"><span class=\"crayon-r\">source<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;https:\/\/gist.github.com\/schaunwheeler\/5825002\/raw\/3526a15b032c06392740e20b6c9a179add2cee49\/xlsxToR.r&#8221;<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-54ea6e1e567e8279671840-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">xlsxToR<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-t\">function<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;myfile.xlsx&#8221;<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">header<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-t\">TRUE<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>I always suggest to read .csv files into R. By the way, for small dataset and testing use, my favourite solution is given by <code>XLConnect<\/code>.<\/p>\n<p>And you, what do you use to import your own Excel files into R? Please leave a comment!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Many people still save their data into Microsoft Excel files. This is an unhappy choice for many reasons but many was already written about this&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-770","post","type-post","status-publish","format-standard","hentry","category-r"],"_links":{"self":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts\/770","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/comments?post=770"}],"version-history":[{"count":0,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts\/770\/revisions"}],"wp:attachment":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/media?parent=770"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/categories?post=770"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/tags?post=770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}