1703 3

[问答] 求助,R语言如何批量合并dta文件 [推广有奖]

  • 2关注
  • 5粉丝

已卖:294份资源

讲师

37%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
17.6240
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
6155 点
帖子
207
精华
0
在线时间
752 小时
注册时间
2019-3-25
最后登录
2025-8-29

楼主
海阔天空锦鲤 学生认证  发表于 2021-11-27 10:36:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
r语言小白,想把一个文件夹下的所有dta合并起来(2002_1.dta  2002_2.dta  2002_3.dta ……),尝试了如下的代码,
library(haven)
setwd("F:/dta1/2002")
filenames <- list.files()
for (file in filenames) {
    new.data <- read_dta(file)
    all.data <- rbind(new.data)
    write_dta(all.data, "name1.dta")   
}

没有报错,是可以运行的。但是从name1的dta大小(4567kb)观察到,每次生成的name1只是保留了最后一个读取的dta数据,没有将所有的dta纵向合并,这该咋办呢?请大佬们帮忙看看,感谢解答

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:DTA文件 R语言 dta filename Library

沙发
绝世涛神 发表于 2021-11-29 11:18:09
all.data<-NULL
for (file in filenames) {
    new.data <- read_dta(file)
    if(is.null(all.data)) all.data<-new.data else all.data <- rbind(new.data)
}
write_dta(all.data, "name1.dta")  

藤椅
松石空月 发表于 2021-12-25 13:44:35
结果总是最后一个文件结果,原因是每次没有将新读取数据加到之前的数据中,修改代码如下:
  1. all.data <- NULL
  2. for (file in filenames) {
  3.   new.data <- read_dta(file)
  4.   
  5.   if(is.null(all.data)) {
  6.     all.data <- new.data
  7.   } else {
  8.     all.data <- rbind(all.data, new.data)
  9. }
  10. write_dta(all.data, "name1.dta")  
复制代码

板凳
Hedaozi 发表于 2021-12-25 14:51:46
  1. all_data <- list()
  2. for (file in filenames) {
  3.   all_data <- c(all_data, list(read_dta(file))
  4. }
  5. write_dta(rbind(all_data), "all_data.dta")  
复制代码

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-20 22:43