dataframe nazwie D zawiera te dane:Konwersja obiektu XTS do użytecznego ramki danych
timestamp,value
"2013-06-02 00:00:00",70
"2013-06-02 00:02:00",70
"2013-06-02 00:07:00",60
"2013-06-02 00:15:00",70
"2013-06-02 00:12:00",60
"2013-06-02 00:30:00",70
"2013-06-02 00:45:00",70
"2013-06-02 01:00:00",70
Kod mam to:
d = read.csv(path, header=TRUE, sep=",")
d2 <- xts(x = d[c("value")], order.by = as.POSIXct(d[, "timestamp"], tz = "GMT", format = "%Y-%m-%d %H:%M:%S"))
ends <- endpoints(d2, on = "minutes", k = 15)
d3 <- period.apply(d2, ends, mean)
Potem chcesz przekonwertować XTS sprzeciw wobec dataframe i używam to:
d3$timestamp = rownames(d3)
rownames(d3) = NULL
d3$timestamp = strptime(d3$timestamp, "%Y-%m-%d %H:%M:%S")
jednak w ostatnim kroku drukuje błąd to:
Error in NextMethod(.Generic) :
number of items to replace is not a multiple of replacement length
Jak obserwuję wpisując d3 po poleceń cały obiekt ma ten format danych:
timestamp
2013-06-02 00:15:00 65
2013-06-02 00:30:00 70
2013-06-02 00:45:00 70
2013-06-02 01:00:00 70
Jednak w nazwie kolumny musi mieć wartość nazwisko i jako drugiej kolumnie mają timestamp jak here. Co może być nie tak?
Prawo wyjście musi być to:
value
65 2013-06-02 00:15:00
70 2013-06-02 00:30:00
70 2013-06-02 00:45:00
70 2013-06-02 01:00:00
Zauważ, że 'timetk :: tk_xt()' i 'timetk :: tk_tbl()' 'tidyquant wymieniasz :: as_xts()' i 'tidyquant :: as_tibble()' . Przejdź do pakietu 'timetk' dla tych operacji koercji. –