【问题标题】:R: How to append different text files with different column numbers?R:如何附加具有不同列号的不同文本文件?
【发布时间】:2016-06-06 08:20:44
【问题描述】:

我有一系列由 MetOffice 提供的数据集。数据描述了英国每日降雨量数据,我有 2008 年至 2015 年的数据。即有 9 个文本文件。我希望他们在彼此下方附加一个以创建一个大型数据集。那就是我想追加 2008 年的数据,然后是 2009 年的数据,然后是 2010 年的数据,直到 2016 年。

我将数据集导入到 R 环境中,并想使用 Base R 连接所有数据集,有人可以帮我吗?

到目前为止,我已经创建了一个代码来读取这样的数据:

setwd("C:/Useful Data/UK Daily Rainfall Data")
temp = list.files(pattern="*.txt")
for (i in 1:length(temp))
  assign(temp[i], read.table(temp[i],header = FALSE,sep=",",fill=TRUE))

此代码已使用原始名称导入所有数据集。如下图所示:

这里的主要挑战也是所有数据集都有不同数量的变量。

编辑:尝试@akrun 解决方案后出错:

【问题讨论】:

    标签: r weather


    【解决方案1】:

    我们可以使用library(data.table) 中的rbindlist,它还具有fill 参数,以防每个数据集中的列数不同

    library(data.table)
    rbindlist(lapply(temp, fread), use.names=TRUE, fill=TRUE, idcol=TRUE)
    #   .id V1 V2 V3
    #1:   1  1  2 NA
    #2:   1  2  3 NA
    #3:   1  3  4 NA
    #4:   2  1 NA  6
    #5:   2  2 NA  7
    #6:   2  3 NA  8
    #7:   2  4 NA  9
    #8:   2  5 NA 10
    

    数据

    d1 <- data.frame(V1= 1:3, V2= 2:4)
    d2 <- data.frame(V1= 1:5, V3= 6:10)
    lst <- list(d1, d2)
    lapply(seq_along(lst), function(i) write.table(lst[[i]], 
        paste0('d', i, '.txt'), row.names=FALSE, quote=FALSE))
    
    temp <- list.files(pattern="*.txt")
    

    【讨论】:

    • 错误表已更新@akrun 请看一下
    • @desmond.carros 你用过use.names=TRUE吗(刚刚更新)
    • 是的,我同时更新了它。但结果是一样的。
    • @desmond.carros 我尝试使用可重现的示例,它对我来说效果很好。
    • @desmond.carros 那样的话,可以试试lst &lt;- lapply(temp, read.table, header=TRUE, stringsAsFactors=FALSE) 看看有没有错误。那么,请执行rbindlist(lst, use.names=TRUE, fill=TRUE, idcol=TRUE) 另外,请在read.table 中指定sep=..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    相关资源
    最近更新 更多