R帮助将多个xlsx文件导入列表,然后使用文件名的一部分将日期拖入列中

时间:2017-11-21 03:14:30

标签: r rstudio

我在一个文件夹中有一系列xlsx文件。这些文件都名为Filename(date).xlsx。我使用以下代码生成文件的数据帧列表。然后我将其编译成一个更大的数据框以进行操作。我想为每个数据框添加一个列,并将其作为每个文件的日期。

data.files
data.files <- list.files(pattern = ".xlsx")
data.list <- lapply(data.files, function(x){
    y <- read_xlsx(x,skip = 1)})
data.list <- lapply(data.list, function(x) {
    x[c(1:(nrow(x)-3)),]})                       
#combind lists to one data frame
data.df <- bind_rows(data.list)

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我个人喜欢rbindlist包中的data.table。 (代码未经过测试,如果我在此处输入错别字或代码错误,请告诉我们)

library( data.table )

data.files <- list.files(pattern = ".xlsx")

# extract the date from each filename
data.dates <- sub( "^Filename(.*)\\.xlsx$", "\\1", data.files )

# import the data, removing the last 4 rows
data.list <- lapply(data.files, function(x) {
         res <- read_xlsx( x, skip = 1 )
         res <- res[ seq_len( nrow(res)-3 ), ]
         return( res )
})

# set the list item names as the dates
data.list <- setNames( data.list, data.dates )

# combine the data, keeping the dates as a column
data.df <- rbindlist( data.list, idcol = "date" )

编辑:看起来bind_rows()有一个.id参数,所以如果您愿意,可以坚持使用。与上述方法相同,只需使用.id中的bind_rows代替idcol中的rbindlist