r - 导入多个 .dta 文件,删除标记为 fomat 的 Haven,从 R 中所有导入的 dta 文件创建数据框
问题描述
我正在尝试导入多个 .dta 文件并从所有导入的 dta 文件中创建一个数据框。我尝试使用以下代码,但没有成功。它适用于 csv 文件,但我没有 stata 来保存我尝试导入并进入数据框的 100 个文件。
library(tidyverse)
library(haven)
tbl1 <-
list.files(pattern = "*.dta") %>%
map_df(~read_dta(.))
Error: Can't convert from `$a1` <labelled<double>> to `$a1` <labelled<double>> due to loss of precision.
* Locations: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, ...
Values are labelled in `$a1` but not in `$a1`.
idstd id preference rotation a0 a1 a1a a2 a3a a3b
<dbl> <dbl> <dbl> <dbl> <dbl+lb> <dbl+> <dbl+l> <dbl+l> <dbl+l> <dbl+l>
1 590217 1 2 1 1 [Manu~ 17 2 [Amh~ 1 [Add~ 1 [Add~ 1 [Yes]
2 590218 3 1 1 1 [Manu~ 17 2 [Amh~ 1 [Add~ 1 [Add~ 1 [Yes]
3 590219 4 7 2 1 [Manu~ 17 2 [Amh~ 1 [Add~ 1 [Add~ 1 [Yes]
4 590220 6 6 2 1 [Manu~ 17 2 [Amh~ 1 [Add~ 1 [Add~ 1 [Yes]
5 590221 10 4 2 2 [Reta~ 17 2 [Amh~ 1 [Add~ 1 [Add~ 1 [Yes]
6 590222 12 12 3 1 [Manu~ 17 2 [Amh~ 1 [Add~ 1 [Add~ 1 [Yes]
解决方案
以下内容对我有用一些模拟 .dta,但如果不查看您的数据就很难确定。
一个建议是read.dta13
改用它,因为它处理较新版本(13+)的 Stata。
library(tidyverse)
library(readstata13)
df_list < lapply(list.files(pattern="*.dta"), read.dta13)
tbl1 <- do.call(rbind.data.frame, df_list)
推荐阅读
- r - 在r中按不同顺序按多列对关联规则进行排序
- python - 使用翻译成python的InterX函数的模块错误
- sql - sqlite 查询适用于加法而不是除法
- javascript - 使用响应类型“cors”在缓存中创建响应
- javascript - 如何将 blob 存储在另一个位置,即。/uploads/audio/currenttime.wav?
- rgraph - 为什么 RGraph 标签不显示?
- python - BDH 公式不采用外部变量
- python - 同一轴上的多个散点图
- wordpress - 在 Wordpress 中保存帖子时出现 504(不在暂存中)
- python - Python - PermissionError: [WinError 32] 该进程无法访问该文件,因为它正被另一个进程使用: