R 当我使用as.POSIXct命令时,列变为空

R 当我使用as.POSIXct命令时,列变为空,r,R,这只是一个更大问题的一部分 我有一个名为ABC_20120204.csv、ABC_20120205.csv和ABC_20120206.csv的文件列表。以下是ABC_20120204.csv的快照: 更新:可通过google drive在以下位置下载文件: 还是放在这里 每个文件有3列,但每列的行数不同:第一个文件有864行,第二个文件有1081行,第三个文件有1439行 我试图在每个文件中按分钟应用时间戳,因此最终每个文件都将有1440行 到目前为止,从我与另一位论坛成员的讨论中,我尝试了使用

这只是一个更大问题的一部分

我有一个名为ABC_20120204.csv、ABC_20120205.csv和ABC_20120206.csv的文件列表。以下是ABC_20120204.csv的快照:

更新:可通过google drive在以下位置下载文件:

还是放在这里

每个文件有3列,但每列的行数不同:第一个文件有864行,第二个文件有1081行,第三个文件有1439行

我试图在每个文件中按分钟应用时间戳,因此最终每个文件都将有1440行

到目前为止,从我与另一位论坛成员的讨论中,我尝试了使用虚构的数据:

fnames<-list.files(pattern="ABC")

first <- TRUE
times <- c("00:00", "23:59")

for (fn in fnames) {
thisdate <- gsub(".*(20[0-9]{6}).csv", "\\1", fn)
twotimes <- as.POSIXct(paste(thisdate, c("00:00", "23:59")), format = "%Y%m%d %H:%M")

allminutes <- data.frame(X2 = seq(twotimes[1], twotimes[2], by="min"))
dat <- read.csv(fn, stringsAsFactors=FALSE)

dat$X2 <- as.POSIXct(paste(thisdate, dat$X2), format = "%Y%m%d %H:%M") 

dat <- merge(dat, allminutes, by="X2", all=TRUE)

write.table(dat, "alldata.csv", append=!first, 
col.names=first, row.names=FALSE, sep=",", na="")
first <- FALSE
我尝试了另一种方法,改为使用以下行:

dat$X2 <- seq(twotimes[1], twotimes[2], by="min")

dat$X2我在这里看不到明确的问题陈述。如果
as.POSIXct
调用失败,那么您应该向我们显示失败时使用的确切数据。请让您的问题重现。亲爱的@TimBiegeleisen,我已使用随附的样本数据更新了问题。请将数据直接包含在您的问题中,而不是作为谷歌驱动器链接,这可能会在某些时候中断。我已将其作为原始csv文件上载到dropbox。我不能直接复制它,因为我猜csv中一定有什么东西阻止了代码的工作,所以我想按原样发送它,看看我一开始做错了什么。我想很少有人会下载你的数据并设置完整的脚本。您可以这样做:查看它是否仅使用一行数据运行。如果没有,那么您就知道第一行(可能是全部)有坏数据。如果第一行不起作用,则使用二分法继续添加行,直到其断开。可能有一行(或多行)的数据不正确。
dat$X2 <- as.POSIXct(paste(thisdate, dat$X2), format = "%Y%m%d %H:%M") 
   X.1    X      x      X2
1   1     1   0.0137    NA
2   2     2   0.0059    NA
3   3     3   0.0174    NA
4   4     4   0.0073    NA
5   5     5   0.0144    NA
6   6     6   0.0103    NA
7   7     7   0.0070    NA
8   8     8   0.0017    NA
9   9     9   0.0010    NA
dat$X2 <- seq(twotimes[1], twotimes[2], by="min")
time <- seq(twotimes[1], twotimes[2], by="min")
M<-merge(dat, time)
dat$X2 <- as.POSIXct(paste(thisdate, dat$X2), format = "%Y%m%d %H:%M")