У меня такая проблема:
У меня есть "тест" фрейма данных, который выглядит примерно так:
Date return price vol
20100902 0.3 15 8.5
20100902 0.4 17 8.6
20100902 0.6 19 8.7
.....
20100903 0.2 13 8.2
20100903 0.4 17 8.6
20100903 0.8 21 9.0
.....
Итак, я привел значения для каждой даты (10 в день). Что я хотел бы сделать сейчас, так это применить ksmooth () к каждой дате, например, ksmooth (возврат, цена, n.points = 50) для каждой даты. Это должно дать мне 50 наблюдений для каждой даты. Кроме того, мне нужна отметка времени для интерполированных значений. Так что получившийся кадр должен понравиться
Date return price
20100620 0.3 15
20100620 0.31 15.2
20100620 0.32 15.3
20100620 0.4 17
20100620 0.6 19
.....
20100621 0.2 13
20100621 0.21 13.1
20100621 0.22 13.2
20100621 0.4 17
20100621 0.8 21
etc.
при 50 наблюдениях в день. Итак, вот что я ищу: возьмите первые 10 наблюдений (например, дата 1 = 20102006, интерполируйте и поставьте отметку времени на интерполированные значения (20100620). Затем возьмите вторые 10 наблюдений (дата = 20100621), интерполируйте и поставить отметку времени на интерполированные значения (20100621) и так далее.
Я новичок в R, но это то, что я пробовал. Я подумал об использовании для этого функции zoo (). Прежде чем что-либо реализовать, я хотел сделать свои записи даты уникальными, поэтому я просто добавил часы к каждой записи.
test <- read.zoo("test.txt", format = "%Y%m%d")
test <- zoo(test, as.POSIXct(time(test)) + 1:26)
Вероятно, в этом что-то не так, потому что Р. пожаловался. Затем я подумал об использовании функции rollapply ().
roll.test <- rollapply(test, 10, FUN = function(x,y) ksmooth(test$return,
+ test$price, "normal", bandwidth = 20, n.points = 50) )
К сожалению, результат очень запутанный. И запрос by.column = FALSE не работает.
Я был бы очень признателен за помощь. Он вовсе не обязательно должен основываться на моей «пробной версии». Большое спасибо Дэни
Мои данные выглядят так:
"date" "days" "return" "price"
"66" 20100620 91 0.18 1389.373
"67" 20100620 91 0.19 1370.57
"68" 20100620 91 0.19 1353.122
"69" 20100620 91 0.19 1336.291
"70" 20100620 91 0.20 1319.774
"71" 20100620 91 0.20 1303.341
"72" 20100620 91 0.21 1286.656
"326" 20100621 91 0.18 1386.28
"327" 20100621 91 0.18 1367.694
"328" 20100621 91 0.19 1350.375
"329" 20100621 91 0.19 1333.615
"330" 20100621 91 0.20 1317.164
"331" 20100621 91 0.20 1300.783
"332" 20100621 91 0.21 1284.113
dput()
. Если вы дадите этот вывод, мы просто можем скопировать и вставить его в R и получить точно такой же объект. Или, как вариант, сделайте то же, что я сделал в своем решении, чтобы убедиться, что нам просто нужно скопировать код и получить объект. - person Joris Meys   schedule 30.11.2010