【问题标题】:How to read in multiple txt files at once and combine to one df using R?如何一次读取多个 txt 文件并使用 R 合并为一个 df?
【发布时间】:2020-04-29 15:54:32
【问题描述】:

我有 160 个文本文件,它们都具有相同的数据列,但没有标题。没有分隔符,所以我必须使用 read.fwf,我可以使用此代码一次读取一个:

myfile= "//PATH/AllFiles/10914_1Mile_TextFile.txt"

read_fwf(myfile, fwf_cols(NUM=5,YNUM=20,STREETNUM=8,STREETPRED=2,STREETNAME=20,STREETTYPE=8,STREETPOSTD=2,STREETADD2=40,CITY=29,STATE=2,ZIP=5,ZIP4=4,EFFDATE=8,TYPE=1,
                                          IUM=6,FILL=1,VAMOUNT=9,FILLS=1,OVAMOUNT=9))

但是这样做 160 次并不理想,所以我试图一次将它们全部放入以绑定它们。到目前为止,这是我的代码:

CompleteDataCollection <- do.call( "rbind", lapply(myfile, function(fn) 
  data.frame(Filename=fn, read.fwf(fn,
                                   widths = c(5,20,8,2,20,8,2,40,29,2,5,4,8,1,6,1, 9,1,9),

                                   header = FALSE,
                                   col.names = c("NUM","YNUM","STREETNUM","STREETPRED","STREETNAME","STREETTYPE","STREETPOSTD","STREETADD2","CITY",
                                                  "STATE","ZIP","ZIP4","EFFDATE","TYPE", "PREMIUM","FILL", "VAMOUNT","FILLS","OVAMOUNT"))
  )))

我不断收到错误,并且 fn 没有设置为任何值,应该是这样吗?任何建议都表示赞赏并欢迎提前感谢您。

【问题讨论】:

    标签: r text-files rbind read.fwf


    【解决方案1】:

    fn 应该是一个包含目录中所有文件名的列表。当您的工作目录设置为文本文件所在的目录时,您可以保存所有文件名的列表:

    fn <- dir()
    

    然后在 fn 上执行 lapply。

    CompleteDataCollection <- lapply(fn, function(x) read.fwf(fn,
                                   widths = c(5,20,8,2,20,8,2,40,29,2,5,4,8,1,6,1, 9,1,9),
    
                                   header = FALSE,
                                   col.names = c("NUM","YNUM","STREETNUM","STREETPRED","STREETNAME","STREETTYPE","STREETPOSTD","STREETADD2","CITY",
                                                  "STATE","ZIP","ZIP4","EFFDATE","TYPE", "PREMIUM","FILL", "VAMOUNT","FILLS","OVAMOUNT"))
    

    【讨论】:

    • 谢谢,我收到一个新错误,它是进度文件中的错误(文件,“rt”):无效的“描述”参数
    • 如果我运行上面的代码,我无法重现这个问题。如果目录中充满了文本文件,对我来说没有错误。尽管在读取数据时您的错误似乎是一个突出问题。如果有帮助,也许你可以看看这个:github.com/alyssafrazee/ballgown/issues/111 它可能不适合你的问题,但也许你可以在那里找到一些信息。这可能只是一个工作目录问题,因此请确保您的工作目录设置为文件所在的目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    相关资源
    最近更新 更多