我有一个包含多个变量的 df,有些是非常长的字符串,最多 4500 个字符。我想将此数据库导出为.dta
文件。
我尝试使用 Haven 的write_dta()
功能保存它,但我收到以下错误消息:Error in write_dta_(data, normalizePath(path, mustWork = FALSE), version = stata_file_format(version), : Writing failure: A provided string value was longer than the available storage size of the specified column.
这是该问题的一个示例:
library(haven)
longFun <- function(n) {
do.call(paste0, replicate(5000, sample(LETTERS, n, TRUE), FALSE))
}
longString <- data.frame(VeryveryveryveryveryveryveryveryveryveryVeryveryveryveryveryveryveryveryveryverylongname = longFun(1), stringsAsFactors = F)
write_dta(longString,"tst.dta")
我知道write_dta
处理长字符串时存在问题(https://github.com/tidyverse/haven/issues/437),一种可能性是修剪字符串(write_dta 中的错误:提供的字符串值比可用存储长指定列的大小)。但对我来说,保留完整的字符串是必不可少的。
有没有办法.dta
使用 R 将带有长字符串的变量保存为文件?
编辑:
我尝试了readstata13::save.dta13
@jay.sf 建议的选项,但这有两个问题:1)无法管理 - 即它截断 - 超过 32-UTF 字符的长变量名,write_dta()
管理得很好。2) 它明显慢于write_dta()
。鉴于我必须保存一个非常大的数据集,这是一个相关的问题。
总之,有没有其他方法可以让我
a) 保存为 .dta 一个带有很长字符串的 df
b) 保留原始变量名(长于 32-UTF 字符)
c) 以相对快速的方式进行。