read.zoo
в пакете зоопарка может сделать это.Предположим, что эти данные:
Lines <- "N stock date price
1 S1 70516 9.11
2 S1 70517 9.00
5718864 S5000 100330 64.8
5718865 S5000 100331 64.6"
Затем мы создаем функцию для преобразования даты (измените ее, если кодирование дат отличается от предполагаемого здесь) и используйте read.zoo
, указывая
- заголовок,
header = TRUE
- для разделения по столбцу акций,
split = 1
- для использования указанного столбца в качестве индекса времени,
index = 2
- дляиспользуйте указанный
colClasses
для исключения первого столбца (таким образом, второй столбец становится первым, третий становится вторым и т. д.), так как этот столбец кажется ненужным, colClasses = c("NULL", NA, NA, NA)
- , если данныена самом деле происходит из файла, а не из текста, затем замените
text = Lines
на что-то вроде file = "myfile.dat"
, что дает:
library(zoo)
toDate <- function(x) as.Date(sprintf("%06d", x), "%y%m%d")
z <- read.zoo(text = Lines, header = TRUE, split = 1, index = 2,
FUN = toDate, colClasses = c("NULL", NA, NA, NA))
В результате получается следующий объект зоопарка:
> z
S1 S5000
2007-05-16 9.11 NA
2007-05-17 9.00 NA
2010-03-30 NA 64.8
2010-03-31 NA 64.6