RODBC导入保持“NA”

时间:2010-10-14 09:33:52

标签: r

当我使用RODBC导入国家/地区数据时,我经常使用ISO2代码。不幸的是纳米比亚的ISO2“NA”总是被遗忘。当然,有很多种方法,但我想知道是否有人找到了正确导入的方法。我试过了

df <- sqlFetch(ch,"data_from_database", na.strings="")
df <- sqlFetch(ch,"data_from_database", as.is)

无济于事。有小费吗?

2 个答案:

答案 0 :(得分:1)

大多数数据库加载器最终都会调用read.table()。所以作为第一步,让我们解决这个问题。

将数据文件tom.csv设为

country,value
GB,55
NA,77
CH,23 

我得到了

R> read.csv("/tmp/tom.csv")
  country value
1      GB    55
2    <NA>    77
3      CH    23
R> read.csv("/tmp/tom.csv", na.string="#")
  country value
1      GB    55
2      NA    77
3      CH    23
R> 

如此简单地将na.string设置为不同的值就足够了。

sqlQuery()一起使用,这比sqlFetch()更直接有用。

答案 1 :(得分:1)

HA!好吧as.is = T不起作用,na.string =“”不起作用,但是他们的权力合并......

> ch <- odbcConnectExcel("m.xls")
> s <- sqlFetch(ch, "m", as.is=T)
> close(ch)
> s 
  iso2 value
1   GB    87
2 <NA>   456
3   IN   423
> ch <- odbcConnectExcel("m.xls")
> r <- sqlFetch(ch, "m", na.string="")
> close(ch)
> r 
  iso2 value
1   GB    87
2 <NA>   456
3   IN   423
> ch <- odbcConnectExcel("m.xls")
> n <- sqlFetch(ch, "m", as.is=T, na.string="")
> close(ch)
> n 
  iso2 value
1   GB    87
2   NA   456
3   IN   423