Добавление метки времени к фреймам данных с другим номером строки в R - PullRequest
0 голосов
/ 04 июня 2018
x1 <- read.csv(header=TRUE, stringsAsFactors=FALSE, text='
X1,X2,X3
10,30,07:00
11,31,07:01
12,32,07:02
13,33,07:03
15,35,07:05
16,36,07:06
18,38,07:08
19,39,07:09')

write.csv(x1, file="20120204.csv", row.names=FALSE)
x2 <- read.csv(header=TRUE, stringsAsFactors=FALSE, text='
X1,X2
20,40
22,42
23,43
24,44
25,45
26,46')
write.csv(x1, file="20120205.csv", row.names=FALSE)

Я пытаюсь объединить эти два кадра данных.Но сначала мне нужно добавить метку времени X3 во фрейм данных 2, чтобы она имела:

X1,X2, X3
20,40, 07:00
22,42, 07:01
23,43, 07:02
24,44, 07:03
25,45, 07:04
26,46, 07:05

, чтобы позже я мог объединить два файла с помощью X3

final <- merge(X1, X2, by="X2", all=TRUE)

I 'мы пытались написать это:

fnames <- list.files(pattern=".*\\.csv", full.names=TRUE)
first <- TRUE
times <- c("00:00", "23:59")
for (i in fnames) {
    x<-read.csv(i, header=TRUE)
    thisdate <- gsub(".*(20[0-9]{6}).csv", "\\1", i)
    twotimes <- as.POSIXct(paste(thisdate, c("00:00", "23:59")), format = "%Y%m%d %H:%M")
    x$X3 <- seq(twotimes[1], twotimes[2], by="min")
    outputfile<-paste0(tools::file_path_sans_ext(i),".csv")
    write.csv(x, file=outputfile)
    first <- FALSE
}

Но я получаю эту ошибку, которая говорит, что отметка времени содержит 1440 строк, а данные x1 и x2 имеют только 8 и 6 соответственно.

Как я могу "принудительно" добавить метку времени во фрейм данных?

1 Ответ

0 голосов
/ 04 июня 2018

Спасибо @Esther за ответ!

Просто добавьте 1: nrow, чтобы соответствовать размеру кадра данных

fnames <- list.files(pattern=".*\\.csv", full.names=TRUE)
first <- TRUE
times <- c("00:00", "23:59")
for (i in fnames) {
  x<-read.csv(i, header=TRUE)
thisdate <- gsub(".*(20[0-9]{6}).csv", "\\1", i)
twotimes <- as.POSIXct(paste(thisdate, c("00:00", "23:59")), format = "%Y%m%d %H:%M")
x$X3 <- seq(twotimes[1], twotimes[2], by="min")[1:nrow(x)]
outputfile<-paste0(tools::file_path_sans_ext(i),".csv")
write.csv(x, file=outputfile)
first <- FALSE
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...