Я делаю некоторые манипуляции с временными рядами, в результате чего преобразовываю некоторые векторы даты в матричные элементы для дальнейшей обработки. Но по какой-то причине я не могу повторно применить класс даты обратно внутри матрицы или формы фрейма данных.
позволять
idx <- as.Date(seq(20),format="%Y-%m-%d",origin="1970-01-01")
idx.m <- matrix(idx,nrow=5,ncol=4)
дает
> idx.m
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
Я конвертирую в фрейм данных для хранения объектов даты.
idx.df <- data.frame(idx.m)
Если я попробую применить несколько типов, мне не удастся вернуть формат даты.
> apply(idx.df,1,as.Date)
[,1] [,2] [,3] [,4] [,5]
X1 1 2 3 4 5
X2 6 7 8 9 10
X3 11 12 13 14 15
X4 16 17 18 19 20
Даже если информация была потеряна при преобразовании матрицы, я все равно смогу преобразовать ее обратно в даты.
Я пробовал несколько других способов и могу поклясться, что мог делать это в прошлом. Есть ли способ начать с индексного вектора, как указано выше, изменить его форму и получить фрейм данных (я не думаю, что матрица может содержать даты, но символы) дат, поддерживающих свойство даты?
Я мог бы вручную построить фрейм данных таким образом
> idx.a <- idx[1:10]
> idx.b <- idx[11:20]
> data.frame(idx.a,idx.b)
idx.a idx.b
1 1970-01-02 1970-01-12
2 1970-01-03 1970-01-13
3 1970-01-04 1970-01-14
4 1970-01-05 1970-01-15
5 1970-01-06 1970-01-16
6 1970-01-07 1970-01-17
7 1970-01-08 1970-01-18
8 1970-01-09 1970-01-19
9 1970-01-10 1970-01-20
10 1970-01-11 1970-01-21
> class(data.frame(idx.a,idx.b))
[1] "data.frame"
> sapply(data.frame(idx.a,idx.b),class)
idx.a idx.b
"Date" "Date"
Любые идеи о том, что мне не хватает?
- Возможно, мне следует добавить, что я намерен выполнить множество манипуляций с матрицами для измененного содержимого данных, но я хочу иметь возможность извлекать соответствующие значения индекса (класса даты) по строкам и индексации столбцов позже.