我有一个文件,里面有很多csv
数据。
我想读取它们并一次创建新列,然后合并为一个数据表。我在这里解释更多。读取多个csv数据并一次创建新列
- 看这个图:
我想基于CSV数据标题就可以创建2分新列
YEAR
和MONTH
。
ex。以201508 Sales Report(London)
为例。我想创建YEAR = 2015
和MONTH = 8
。我不知道该怎么做,但我可以在不创建新列的情况下一次阅读它们。
my_read_data <- function(path){ data <- data.table::fread(path, header = T, strip.white = T, fill = T) data <- data[data[[5]] != 0,] data <- subset(data, select = c(-1,-7,-10,-12,-13,-14,-15,-17)) } file.list <- dir(path = "//path/", pattern='\\.csv', full.names = T) df.list <- lapply(file.list, my_read_data) dt <- rbindlist(df.list)
如何修改我的密码?
其实我不确定我的代码是否正确。
欣赏。
感谢@Jaap
,我的新代码是:
my_read_data <- function(x){
data <- data.table::fread(x, header = T, strip.white = T, fill = T)
data <- data[data[[5]] != 0,]
data <- subset(data, select = c(-1,-7,-10,-12,-13,-14,-15,-17))
}
file.list <- list.files(path = "/path/", pattern = '*.csv')
dt.list <- sapply(file.list, my_read_data, simplify=FALSE)
但是,我得到一个错误。
Error in data.table::fread(x, header = T, strip.white = T, fill = T) :
File not found: C:\Users\PECHEN\AppData\Local\Temp\RtmpiihFR4\filea0c4d726488
In addition: Warning messages:
1: running command 'C:\Windows\system32\cmd.exe /c (TWM-201508 Sales Report(London).csv) > C:\Users\PECHEN\AppData\Local\Temp\RtmpiihFR4\filea0c4d726488' had status 1
2: In shell(paste("(", input, ") > ", tt, sep = "")) :
'(TWM-201508 Sales Report(London).csv) > C:\Users\PECHEN\AppData\Local\Temp\RtmpiihFR4\filea0c4d726488' execution failed with error code 1
此外,修改我的代码:
my_read_data <- function(x){
data <- data.table::fread(x, header = T, strip.white = T, fill = T)
data <- data[data[[5]] != 0,]
data <- subset(data, select = c(-1,-7,-10,-12,-13,-14,-15,-17))
}
file.list <- dir(path = "/path/", pattern='\\.csv', full.names = T)
df.list <- lapply(file.list, my_read_data)
dt <- rbindlist(df.list, idcol = 'id')[, `:=` (YEAR = substr(id,5,8), MONTH = substr(id,9,10))]
我用YEAR = substr(id,5,8), MONTH = substr(id,9,10)
因为每个数据的标题有编号前4个系统字符。恩。 AAA-201508销售报告
但是,它不起作用。
感谢@Peter TW
,它的工作原理。
与获取列表中的文件'list.files'读取它们并将它们绑定通过使用'rbindlist'的'idcol'-参数([请参阅此处的示例](https://stackoverflow.com/questions/32888757/reading-multiple-files-into-r-best-practice))。最后使用'DT [,YEAR:= substr(id,1,4)]'获取年份和DT [,MONTH:= substr(id,5,6)]'获取月份。 – Jaap
你能解释一下吗?我认为这很好,但我不明白 –
增加了更广泛的答案,应该更清楚。 HTH – Jaap