R sqldf - match.fun(asfn)'c(“as.labelled”,“as.integer”)'不是函数,字符或符号

时间:2015-05-06 17:19:11

标签: r sqldf

R的总新手,刚刚花了几个小时玩,并且认为我可以玩一些NHANES数据集,例如ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/nhanes/2003-2004/

所以抓住了一对夫妇,在与merge(bmx_c, demo_c)和一个快速Google玩游戏之后,我认为sqldf库是一种更有效的方式来合并/从文件中提取几个列,进行游戏有,但我遇到了问题。

Error in match.fun(asfn) : 
  'c("as.labelled", "as.integer")' is not a function, character or symbol**

NHANES文件采用SAS格式,因此我不得不:

install.packages("Hmisc")
install.packages("sqldf")

library(Hmisc)
library(sqldf)

demo_c <- sasxport.get("DEMO_C.XPT")
bmx_c <- sasxport.get("BMX_C.XPT")

is.data.frame(demo_c)
[1] TRUE

sqldf("select seqn from demo_c")
Error in match.fun(asfn) : 
  'c("as.labelled", "as.integer")' is not a function, character or symbol
>  

summary(demo_c$seqn)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  21000   23540   26070   26070   28600   31130 
> 

我猜测需要进行某种类型的转换,但我不知道R的细微之处。

1 个答案:

答案 0 :(得分:4)

sqldf不支持Hmisc生成的%d列类。所有列似乎都是整数或数字,因此首先将列转换为数字:

"labelled"

如果您愿意,可以将整数1转换为整数:

demo_c[] <- lapply(demo_c, as.numeric)
sqldf("select seqn from demo_c")