R语言sqldf函数是否支持类似SQL desc的表列查看功能?
R中sqldf函数查看表列信息的正确方式
sqldf默认基于SQLite实现,不支持MySQL风格的DESC或DESCRIBE语句,直接执行这类命令会触发语法错误。
要查看数据框(在sqldf中被当作SQL表)的列信息,需使用SQLite原生的PRAGMA table_info()命令,具体操作示例如下:
完整操作流程
- 安装并加载sqldf包,读取目标数据:
install.packages("sqldf") library(sqldf) data_file <- "path/to/file/dash-activity.csv" data <- read.csv(data_file)
- 执行常规SQL查询验证sqldf功能正常:
sqldf(" select state, count(*) as count, round(cast(count(*) as real)/154 * 100, 2) as pct from data group by 1 order by 1 ")
返回结果:
state count pct 1 DE 12 7.79 2 FL 18 11.69 3 HI 23 14.94 4 KY 5 3.25 5 MD 31 20.13 6 ME 4 2.60 7 NC 7 4.55 8 ND 4 2.60 9 NM 13 8.44 10 NV 4 2.60 11 RI 5 3.25 12 VA 9 5.84 13 VT 13 8.44 14 WV 6 3.90
- 直接使用
DESC/DESCRIBE会触发语法错误:
sqldf("desc data") # Error: near "desc": syntax error sqldf("describe data") # Error: near "describe": syntax error
- 使用
PRAGMA table_info()获取列详情:
sqldf("pragma table_info('data')")
返回结果:
cid name type notnull dflt_value pk 1 0 sex TEXT 0 NA 0 2 1 race TEXT 0 NA 0 3 2 grade TEXT 0 NA 0 4 3 location_id INTEGER 0 NA 0 5 4 state TEXT 0 NA 0 6 5 location_desc TEXT 0 NA 0 7 6 short_question TEXT 0 NA 0 8 7 greater_risk_question TEXT 0 NA 0 9 8 pct_were_not_active REAL 0 NA 0 10 9 units TEXT 0 NA 0
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

