一个非常直截了当的问题。
library(data.table)
dt <- fread("HK0001.csv", drop = 5:24)
这样的数据:
Time Price Volume Amount Flag
1: 2016-01-04 09:05:06 105.0 9500 993700 1
2: 2016-01-04 09:20:00 104.1 23500 2446350 0
3: 2016-01-04 09:30:00 104.1 18500 1924550 1
4: 2016-01-04 09:30:01 103.9 12500 1300550 0
5: 2016-01-04 09:30:02 104.1 16118 1675233 1
6: 2016-01-04 09:30:05 104.0 13000 1352200 0
7: 2016-01-04 09:30:06 104.1 2500 260100 1
8: 2016-01-04 09:30:07 104.1 1500 156150 1
9: 2016-01-04 09:30:08 104.3 500 52150 1
10: 2016-01-04 09:30:10 104.0 1000 104000 0
11: 2016-01-04 09:30:11 103.9 1000 103900 0
12: 2016-01-04 09:30:15 104.0 3500 364450 1
13: 2016-01-04 09:30:17 104.3 2000 208450 1
14: 2016-01-04 09:30:19 104.3 1500 156450 1
15: 2016-01-04 09:30:20 104.4 500 52200 1
16: 2016-01-04 09:30:21 104.4 1500 156600 1
17: 2016-01-04 09:30:22 104.4 1000 104400 1
18: 2016-01-04 09:30:24 104.4 1500 156600 1
19: 2016-01-04 09:30:25 104.0 2000 208000 0
20: 2016-01-04 09:30:27 104.1 3500 364350 1
在同一个文件夹下,有很多这样的csv文件,其名称也是股票代码。如fread
行中的示例所示,“0001”是自动收录器名称,有“0002”,“0003”和另外一千多个。
问题:
我想通过添加一个新列,在fread
之后将文件名中的自动收录器更新为data.table。
现在列为Time
,Price
,Volume
,Amount
,Flag
。我希望将名为stock ticker
的一列作为第一列。
我在SO上检查了以下没有解决问题的内容。
Rscript: Determine path of the executing script
getting the name of a dataframe from loading a .rda file in R
非常感谢!
答案 0 :(得分:3)
如何在导入后从substr
添加?
file <- "HK0001.csv"
dt <- fread(file, drop = 5:24)
dt[ , stockTicker := substr( file, 3, 6 ) ]
你也可以把它变成一个函数......
read_in <- function( file ) {
dt <- fread(file, drop = 5:24)
dt[ , stockTicker := substr( file, 3, 6 ) ]
return( dt )
}
然后在文件列表上调用该函数,将它们绑定在一起作为一个大数据表对象(因为现在标识了每个文件的数据):
file.list <- list.files()
DT <- lapply( file.list, read_in )
DT <- rbindlist( DT )