【发布时间】:2020-09-10 15:35:10
【问题描述】:
我正在处理具有 n 个数据框的项目。在我可以与他们合作之前,需要进行一些处理。 其中一项操作是为每个数据框添加“年”、“月”和“日”列。还获得并保留格式为“yyyy - mm - dd”的列“日期”。
dateiNamen<-dir(path="input_folder",pattern = "merged", all.files = T)
Auswertung<-function(Dateiname){
setwd("input_folder")
data<-read.delim(Dateiname, stringsAsFactors = FALSE)
data$date<-as.Date(data$date)
data<-subset(data, data$date>"1994-12-31")
data<-data[,colMeans(is.na(data))<0.15]
Ausgabedatei <- paste0("output_folder",Dateiname, "_bearbeitet",".csv")
write.table(data, file = Ausgabedatei, row.names = F, col.names = T, sep=",")
setwd("Project_folder")
}
fun<-lapply(dateiNamen, Auswertung)
这是第一步,它可以正常工作,此后任何这些数据框的“日期”列 (XX$date) 都具有以下结构:
head(XX$date)
[1] "1995-01-01" "1995-01-02" "1995-01-03" "1995-01-04" "1995-01-05" "1995-01-06"
str(XX$date)
Date[1:9131], format: "1995-01-01" "1995-01-02" "1995-01-03" "1995-01-04" "1995-01-05" "1995-01-06" "1995-01-07" "1995-01-08" "1995-01-09" "1995-01-10" ...
class(XX$date)
[1] "Date"
dput(head(XX$date))
structure(c(9131, 9132, 9133, 9134, 9135, 9136), class = "Date")
现在,我将我的第二个函数应用于数据帧,以在每个数据帧中创建年、月和日的列:
dateiNamen2<-dir(path="output_folder",pattern = "merged", all.files = T)
Spalten<-function(Dateiname){
setwd("output_folder")
data<-read.csv(Dateiname,header = TRUE, ";")
data<-data%>%
dplyr::mutate( year = lubridate::year(date),
month = lubridate::month(date),
day = lubridate::day(date))
Ausgabedatei <- paste0("output_folder_2",Dateiname, "_bearbeitet",".csv")
write.table(data, file = Ausgabedatei, row.names = F, col.names = T, sep = ",")
setwd("Project_folder")
}
fun2<-lapply(dateiNamen2, Spalten)
当我应用此功能时,我收到以下错误:
**Error in as.POSIXlt.default(x, tz=tz(x)):
dont know how to convert "x" in class ""POSIXlt""**
我无法弄清楚是什么导致了这个问题,因为如果我在单个文件上运行相同的命令,它可以完美运行。 也许你们中的一个人看到了我错过的东西。
是的,这些函数可能会“更漂亮”,但它们是我编写的第一个函数。我会继续努力的! :)
【问题讨论】: