来自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")
任何帮助将不胜感激!