【发布时间】:2017-04-07 15:17:33
【问题描述】:
我有一个很长的 CRSP data.frame,我正在尝试将其解栈为宽格式。
数据框包含 kypermno(股票标识符)、caldat(日期 yyyy-mm-dd)、prc(价格)、adjprc(调整后的价格)和 ret(回报)。数据框按股票 (kypermno) 和日期 (caldat) 排序,因此每一行代表给定日期的一只股票。
我想要的格式是:每个 kypermno 作为列(名称)和每一天(日期)作为行(名称)以及相应字段中的返回(删除 prc 和 adjprc)。
我试过这个:D_ret <- as.data.frame(unstack(hilfs_ret, ret ~ kypermno))
问题是并非所有股票都在所有日子里都有回报,所以我收到一条错误消息:
“(函数中的错误 (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : Argumente implizieren unterschiedliche Anzahl Zeilen" (英文:Arguments 暗示不同的行数)
如果股票在该日期没有回报或什至不存在,则应填写“NA”。
当我跳过“as.data.frame”函数时,不会出现此错误消息,但我想要一个 data.frame 而不是列表。
使用 for 循环和 if 语句的解决方案不可行,因为数据集非常大(4800 万个条目)。
有没有办法解决这个问题?也许有重塑功能?
非常感谢您的帮助,祝您有美好的一天!
亲切的问候
kb
【问题讨论】: