R-根据文件名的一部分将日期列添加到数据框

时间:2016-09-13 09:37:41

标签: r date dataframe filenames

来自R初学者的一个特定问题(我已经搜索过,但没有找到解决方案)。

我有一堆csv文件,其中一个丑陋的列日期名为“W-01”,“Th-02”,“F-0”表示星期三 - 1日,当天 - 第二天,星期五 - 03日等等。其余值是数字格式,已在代码中使用colClasses进行分类:

  

W 01; 37.91; 33.00; 31.00; 27.09; 27.09; 31.00; 33.60;   Th 02; 40.00; 37.19; 35.69; 35.01; 35.01; 35.94; 40.00;   F 03; 43.04; 41.19; 40.77; 40.92; 40.69; 40.92; 41.93;

每个月都会生成一个文件,其格式如下:

以八月为例:prmdiari_20160801_20160831

我想使用文件名中嵌入的日期为每个数据框添加一个具有实际日期格式的列(%D,%M,%Y)。

这里是我已经清理数据并融入长格式数据帧的部分代码。我正在考虑使用该函数读取每个csv来存储文件名,提取日期模式(例如“20160801_20160831”)并根据每个文件的初始和最终数据添加日期列,但不知道如何处理它而不实现for循环(不是最好的解决方案)。

# Creating the list files

prmdiari.list <- list.files(pattern = "prmdiari*", recursive = TRUE, full.names = TRUE)

# Reading each file and appending the rows to a unique dataframe

prmdiari <- do.call("rbind",lapply(prmdiari.list, FUN = function(files) 

  {read.csv2(files, header=FALSE, sep=";", dec = ".", skip = 2, colClasses = c("character", rep("numeric", 25), "NULL"))}))

# Naming the output dataframe columns

colnames(prmdiari) <- c("day", "H01", "H02", "H03", "H04", "H05", "H06", "H07", "H08", "H09", "H10", "H11", "H12", "H13", "H14", "H15", "H16", "H17", "H18", "H19", "H20", "H21", "H22", "H23", "H24", "H25" )

# Removing the asterisk rows

prmdiari.clean <- subset(prmdiari, !prmdiari$day == "*")

# Transforming the dataframe from wide to long format

prmdiari.longformat <- melt(prmdiari.clean, id.vars = "day", variable.name = "Period", value.name = "Market value")

任何帮助将不胜感激!

0 个答案:

没有答案