【问题标题】:How to loop through a folder of dta files in R [closed]如何遍历R中的dta文件文件夹[关闭]
【发布时间】:2020-04-21 21:35:11
【问题描述】:

我目前正在尝试将多个调查数据集垂直合并为一个大数据集。数据集位于我桌面上的一个文件夹中,采用 dta 格式。请问我该怎么做?

【问题讨论】:

  • list.files() 然后遍历所有文件,并从have包中使用lapply()read_dta()导入它们?如果您能提供任何示例代码或数据,我们可以为您提供更多帮助。

标签: r loops


【解决方案1】:

我认为 data.table 包使得折叠存储在列表中的数据框非常容易:

library(haven)
library(data.table)

d1 <- data.frame(x = rpois(10, 13))
d2 <- data.frame(x = rpois(10, 13))
write_dta(d1, "1993.dta")
write_dta(d2, "1994.dta")

# get the file names
files <- list.files(pattern = "\\.dta$")

# write a function that reads in the data, and transforms it into a data.table object
open.files <- function(x){ setDT(read_dta(x)) }

# read in the files in a list and name the list
d <- lapply(files, open.files)
names(d) <- files

# rbind all the data.frames
d <- rbindlist(d, idcol = "filename", use.names = T)
d
     filename  x
 1: 1993.dta 10
 2: 1993.dta 13
 3: 1993.dta 14
 4: 1993.dta 13
 5: 1993.dta 12
 6: 1993.dta 17
 7: 1993.dta 12
 8: 1993.dta 18
 9: 1993.dta 11
10: 1993.dta 13
11: 1994.dta 13
12: 1994.dta 12
13: 1994.dta 15
14: 1994.dta 11
15: 1994.dta 11
16: 1994.dta  7
17: 1994.dta 16
18: 1994.dta 10
19: 1994.dta 11
20: 1994.dta 15

或者,看看这里:Convert a list of data frames into one data frame

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 1970-01-01
    • 2012-07-12
    • 2019-05-08
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2018-01-16
    • 2017-04-03
    相关资源
    最近更新 更多