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

时间:2018-06-01 02:02:24

标签: r

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

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

更新:可以通过谷歌驱动器下载文件:https://drive.google.com/drive/folders/17Rq1Vx21VqZhwYKWl9HLWZzxoZh2mxIh?usp=sharing

或dropbox here https://www.dropbox.com/sh/q6c9w8kryn2by5z/AAD3rPnBgP5CyRy7E5eautJGa?dl=0

   X.1    X      x      X2
1   1     1   0.0137    2
2   2     2   0.0059    3
3   3     3   0.0174    4
4   4     4   0.0073    5
5   5     5   0.0144    6
6   6     6   0.0103    7
7   7     7   0.0070    8
8   8     8   0.0017    9
9   9     9   0.0010   10

每个文件有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

代码与虚拟数据(How to automate data importing, add time stamp, and standardize the number of rows in data files in R)完美配合。 但是,当我应用我的真实数据集时,此行停止工作

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

而不是显示为日期和时间,列X2中只有NA。

   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")

但它表示行数不一样。我也试过merge,cbind,做了一个新的data.frame,但这一切归结为一个错误:不同的行数。

我也试过

time <- seq(twotimes[1], twotimes[2], by="min")
M<-merge(dat, time)

这次合并了数据和时间,但行是文件A,B和C的时间戳累积(大约200万行,原因未知)。

任何人都可以在那里提供一些提示:

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

0 个答案:

没有答案