library(lixingr)
lxr_query(
endpoint = lxr_cn_company_fs_non_financial(),
start_date = "2018-01-01",
end_date = "2024-02-05",
stock_codes = "002352",
metrics_list = "y.bs.pe_ttm.t"
)#> # A tibble: 5 × 7
#> reportType reportDate currency standardDate date stockCode y.bs.pe_ttm.t
#> <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
#> 1 annual_report 2023-03-29T… CNY 2022-12-31T… 2022… 002352 40.7
#> 2 annual_report 2022-03-31T… CNY 2021-12-31T… 2021… 002352 95.9
#> 3 annual_report 2021-03-18T… CNY 2020-12-31T… 2020… 002352 56.8
#> 4 annual_report 2020-03-24T… CNY 2019-12-31T… 2019… 002352 28.1
#> 5 annual_report 2019-03-16T… CNY 2018-12-31T… 2018… 002352 34.8
可复现行业研究数据源 lixingr
从人手中拿走机器能做的,剩下的则是人之为人的灵明。
1 初心动机
从人手中拿走机器能做的,剩下的则是人之为人的灵明。所以,一切可以自动化的都应当自动化。但案头研究工作,充斥着拖拉点拽复制粘贴。因为对办公软件而言,使用方式越直观,上手越快,越能吸引用户。但要享受内容创作,就得让创作的归创作,机械的归机械。我们可以借鉴“文学化编程”,将“可复现科学研究”应用于“可复现行业研究”。
“可复现研究”让你在一份文档中,混排文字与代码,且文档会嵌入代码生成内容。借助代码,整洁数据任君差遣,而不必从头整理。复杂数据处理、图表绘制不在话下,并有迹可循。代码也是文本,外显研究过程均以文本记录,杜绝了交互操作。这意味着,任何人拿到项目文本,都可以重新生成同样的报告。使用版本控制工具,还可以记录版本,识别任何版本间的改动。修改迭代再也不必瞻前顾后。
Quarto 是“可复现研究”的软件工程实现。利用 Quarto,可以做到“一处写就,多处成就”,即同一文件输出多种格式文件。本文,乃至本站,均由文本自动渲染部署而成。这样一来,你只需专心创作内容,而不必分心散力于机械重复事务。无需担心学习时间成本,借助大语言模型,连滚带爬用起来一周足矣。
综合数据质量与使用成本,我将理杏仁接口封装成了 R 程序包:lixingr。目前已完成中国大陆上市公司、中国香港上市公司接口封装,期待你试用、反馈,共同完善。
2 先睹为快
利用 lixingr
包调用理杏仁接口,按年查询 2018 年以来顺丰控股 PE TTM。
3 环境配置
安装 R 与 RStudio
请参考这个资料,并了解 RStudio 基础用法。
验证安装
打开命令行工具,在 Windows 上是命令提示符或 PowerShell,在 macOS 或 Linux 上是终端。输入以下代码并按下回车键运行:
R --version
如果 R 成功安装,这个命令会返回 R 版本信息。如果系统提示 R 不是内部或外部命令,也不是可运行程序或类似消息,那么 R 可能没有成功安装,或者 R 的安装目录没有添加到系统环境变量中。
安装
devtools
包因为
lixingr
还未发布到 CRAN,所以需要通过 GitHub 安装。打开 RStudio,在 Console 中运行:install.packages("devtools")
安装
lixingr
包通过
devtools
包,我们可以将托管在 GitHub 上的lixingr
包安装到本地。::install_github("tanchangde/lixingr") devtools
配置理杏仁接口
注册并登录到理杏仁,然后从开放平台获取 Token。在 Console 运行:
file.edit("~/.Renviron")
在打开的文件中添加一行新内容:
= "已获取的 Token" TOKEN_LIXINGER
保存并关闭
.Renviron
文件,重启 RStudio 。这样我们使用lixingr
包时,就不用显式声明 Token,分享项目代码更安全。加载包
新建一个 R 脚本文件,执行如下代码,将
lixingr
包加载到当前环境:library(lixingr)
若未报错则成功加载,尽情玩耍吧。
4 用法提示
lixingr
包主函数是 lxr_query()
,在 Console 输入 ?lxr_query
后回车,你可以看到函数文档。
为与官方接口设计保持一致,同时方便赋值 endpoint
参数。lixingr
包提供了 lxr_cn
或 lxr_hk
等开头的函数,返回理杏仁接口端点(API endpoint)。
比如,lxr_cn_company_fs_non_financial()
, 返回中国大陆非金融上市公司财务数据端点:“https://open.lixinger.com/api/cn/company/fs/non_financial”。
为避免在程序包文档复述接口端点参数(实为偷懒),需要你在理杏仁接口文档查看对应端点参数说明,再为 lxr_query()
提供参数。参数可用驼峰命名法,下划线命名法亦可。lxr_query()
会检查输入参数是否有效、必要参数是否缺失。
理杏仁接口文档标识为数组的参数,需以字符向量提供,函数会自行转换。
比如,查询多家大陆上市公司基础信息,文档要求查询参数如下:
{
"token": "......",
"stockCodes": [
"300750",
"600519",
"600157"
]
}
用 lixingr
包,则需要这样写:
lxr_query(
endpoint = lxr_cn_company_profile(),
stock_codes = c("300750", "600519", "600157")
)