![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 43 Регистрация: 4.01.2012 Пользователь №: 23400 ![]() |
Добрый день.
Помогите, пожалуйста, написать алгоритм для R. У меня две базы данных, одна из них включает номер пациента, дату каждого измерения (как правило, измерение проводилось в среднем каждуjу неделю в течении 1 года ) и номер недели (1,2,3...54), вторая база включает информацию о ежедневной температуре воздуха. Задача: нужно посчитать среднюю температуру, предшествующую каждому измерению. Например, для первой недели нужно рассчитать среднюю темп за 7 дней до измерения (28apr1999-7дней), для второй недели за период 28apr1999-07may1999 и т.д. FID studydate week 1 28apr1999 1 1 07may1999 2 1 14may1999 3 1 21may1999 4 Second dataset temp date 5.37 1999-04-20 2.13 1999-04-21 1.6 1999-04-22 -0.17 1999-04-23 2.53 1999-04-24 Спасибо! |
|
![]() |
![]() |
![]() |
![]()
Сообщение
#2
|
|
Группа: Пользователи Сообщений: 43 Регистрация: 4.01.2012 Пользователь №: 23400 ![]() |
Временной ряд уже создан, это все те же данные
FID stday week 1 28apr1999 1 1 07may1999 2 1 14may1999 3 1 21may1999 4 1 27may1999 5 1 04jun1999 6 1 11jun1999 7 1 18jun1999 8 1 25jun1999 9 1 02jul1999 10 1 09jul1999 11 1 16jul1999 12 1 23jul1999 13 1 30jul1999 14 1 06aug1999 15 1 13aug1999 16 1 20aug1999 17 1 27aug1999 18 1 03sep1999 19 1 10sep1999 20 1 17sep1999 21 > summary(data$stday) Min. 1st Qu. Median Mean 3rd Qu. Max. "1999-04-28" "2003-08-26" "2005-12-20" "2006-02-11" "2009-01-13" "2012-02-23" > y<-zooreg(seq(1,,length=676),as.Date(data$stday,format="%Y-%m-%d"),start=as.Date("1999-04-28"),end=as.Date("2012-02-23"),freq=1,deltat=7) > y[500:505] 2008-11-19 2008-11-26 2008-12-03 2008-12-10 2008-12-17 2008-12-24 500 501 502 503 504 505 Или же другой вариант y0<-zoo(seq(1,,length=676),as.Date(data$stday,format="%Y-%m-%d")) Warning message: In zoo(rval[i], index(x)[i]) : some methods for ?zoo? objects do not work if the index entries in ?order.by? are not unique > y0[500:505] 2000-02-21 2000-02-21 2000-02-21 2000-02-21 2000-02-21 2000-02-21 194 298 503 557 606 185 > data$stday[500:505] [1] "2000-01-31" "2000-02-07" "2000-02-14" "2000-02-21" "2000-02-28" [6] "2000-03-06" Результаты мне кажутся сомнительными... Не понимаю, как решить эту задачку и есть ли решение в R. Сообщение отредактировал Olga_ - 8.11.2012 - 22:34 |
|
![]() |
![]() |
![]()
Сообщение
#3
|
|
![]() Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 ![]() |
Временной ряд уже создан, это все те же данные FID stday week 1 28apr1999 1 1 07may1999 2 1 14may1999 3 1 21may1999 4 1 27may1999 5 1 04jun1999 6 1 11jun1999 7 1 18jun1999 8 1 25jun1999 9 1 02jul1999 10 1 09jul1999 11 1 16jul1999 12 1 23jul1999 13 1 30jul1999 14 1 06aug1999 15 1 13aug1999 16 1 20aug1999 17 1 27aug1999 18 1 03sep1999 19 1 10sep1999 20 1 17sep1999 21 > summary(data$stday) Min. 1st Qu. Median Mean 3rd Qu. Max. "1999-04-28" "2003-08-26" "2005-12-20" "2006-02-11" "2009-01-13" "2012-02-23" > y<-zooreg(seq(1,,length=676),as.Date(data$stday,format="%Y-%m-%d"),start=as.Date("1999-04-28"),end=as.Date("2012-02-23"),freq=1,deltat=7) > y[500:505] 2008-11-19 2008-11-26 2008-12-03 2008-12-10 2008-12-17 2008-12-24 500 501 502 503 504 505 Или же другой вариант y0<-zoo(seq(1,,length=676),as.Date(data$stday,format="%Y-%m-%d")) Warning message: In zoo(rval[i], index(x)[i]) : some methods for ?zoo? objects do not work if the index entries in ?order.by? are not unique > y0[500:505] 2000-02-21 2000-02-21 2000-02-21 2000-02-21 2000-02-21 2000-02-21 194 298 503 557 606 185 > data$stday[500:505] [1] "2000-01-31" "2000-02-07" "2000-02-14" "2000-02-21" "2000-02-28" [6] "2000-03-06" Результаты мне кажутся сомнительными... Не понимаю, как решить эту задачку и есть ли решение в R. не понимаю что Вы пытаетесь сделать ![]() ну вот почитайте ?na.approx в zoo, там в примере есть пересчет серии using na.approx to create regularly spaced series ![]() |
|
![]() |
![]() |
![]() ![]() |