gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:51:50 33 4
gpt4 key购买 nike

R 的新手,刚玩了几个小时,我想我会玩一些 NHANES 数据集,例如ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/nhanes/2003-2004/

所以捕获了一对夫妇,然后与 merge(bmx_c, demo_c) 一起玩和一个快速的谷歌我认为 sqldf library 将是一种更有效的方法来合并/提取文件中的几列,以进行播放,但我遇到了一个问题。

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 的微妙之处。

最佳答案

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

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

如果您愿意,可以将整数转换为整数:
isInt <- sapply(demo_c, inherits, "integer")
demo_c[isInt] <- lapply(demo_c[isInt], as.integer)
demo_c[!isInt] <- lapply(demo_c[!isInt], as.numeric)

关于R sqldf - match.fun(asfn) 'c("as.labelled", "as.integer")' 不是函数、字符或符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30083486/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com