我在一个文件夹中有一系列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)
感谢您的帮助
答案 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
。