[R] RODBC, missing values, and Excel

Sundar Dorai-Raj sundar.dorai-raj at pdf.com
Thu Jul 13 03:52:07 CEST 2006


Hi, Gabor,

Thanks for the reply. Perhaps Prof. Ripley will enlighten us as he is 
the RODBC maintainer.

Unfortunately, gdata::read.xls will not work for me (at least I don't 
think it will) because I need to refer to each worksheet by name and not 
by number. For example, I need extract data from "Sheet1" and not simply 
the first sheet.

Thanks,

--sundar

Gabor Grothendieck wrote:
> I also got a strange result too (I renamed it sdr.read.xls
> to distinguish it from read.xls in gdata and noticed that a
> space got into my na's somehow so I used "na " for my
> na.strings:
> 
> 
>>sdr.read.xls("/test.xls", "Sheet2", na.strings = "na ")
> 
>      x
> 1 <NA>
> 2 <NA>
> 3   na
> 4   na
> 5   na
> 6   na
> 7 <NA>
> 
> I had more success using read.xls in the gdata package.
> Note that we need to install perl first if not already present:
> 
> 
>>library(gdata)  # for read.xls
>>read.xls("/test.xls", 2, na.strings = "na ")
> 
>      x
> 1 0.11
> 2 0.11
> 3   NA
> 4   NA
> 5   NA
> 6   NA
> 7 0.11
> 
> 
>>R.version.string # XP
> 
> [1] "Version 2.3.1 Patched (2006-06-04 r38279)"
> 
>>packageDescription("gdata")$Version
> 
> [1] "2.1.2"
> 
>>packageDescription("RODBC")$Version
> 
> [1] "1.1-7"
> 
> 
> On 7/12/06, Sundar Dorai-Raj <sundar.dorai-raj at pdf.com> wrote:
> 
>>Hi, all,
>>
>>I'm trying to use RODBC to read data from Excel. However, I'm having
>>trouble converting missing values to NA and rather perplexed by the
>>output. Below illustrates my problem:
>>
>>## DATA - copy to Excel and save as "tmp.xls"
>>## tmp.xls!Sheet1
>>x
>>0.11
>>0.11
>>na
>>na
>>na
>>0.11
>>
>>## tmp.xls!Sheet2
>>x
>>0.11
>>0.11
>>na
>>na
>>na
>>na
>>0.11
>>
>>## R Code
>>read.xls <- function(file, sheet = "Sheet1", ...) {
>>  require(RODBC)
>>  channel <- odbcConnectExcel(file)
>>  sheet <- sprintf("select * from `%s$`", sheet)
>>  x <- sqlQuery(channel, sheet, ...)
>>  odbcClose(channel)
>>  x
>>}
>>
>>read.xls("./tmp.xls", "Sheet1", na.strings = "na")
>>## works as expected
>>#     x
>>#1 0.11
>>#2 0.11
>>#3   NA
>>#4   NA
>>#5   NA
>>#6 0.11
>>
>>read.xls("./tmp.xls", "Sheet2", na.strings = "na")
>>## Huh? What happened?
>>#   x
>>#1 NA
>>#2 NA
>>#3 NA
>>#4 NA
>>#5 NA
>>#6 NA
>>#7 NA
>>
>> > sessionInfo()
>>Version 2.3.1 (2006-06-01)
>>i386-pc-mingw32
>>
>>attached base packages:
>>[1] "methods"   "stats"     "graphics"  "grDevices" "utils"     "datasets"
>>[7] "base"
>>
>>other attached packages:
>>  RODBC
>>"1.1-7"
>>
>>______________________________________________
>>R-help at stat.math.ethz.ch mailing list
>>https://stat.ethz.ch/mailman/listinfo/r-help
>>PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>>
> 
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html



More information about the R-help mailing list