Форум врачей-аспирантов

Здравствуйте, гость ( Вход | Регистрация )

> Помогите, пожалуйста, написать алгоритм для R
Olga_
сообщение 29.08.2012 - 12:02
Сообщение #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


Спасибо!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
 
Открыть тему
Ответов
p2004r
сообщение 29.08.2012 - 16:37
Сообщение #2





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(Olga_ @ 29.08.2012 - 12:02) *
Добрый день.

Помогите, пожалуйста, написать алгоритм для 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


Спасибо!


Пожалуйста! smile.gif

Я предлагаю посчитать скользящим окном среднее для всех дней в базе. При импорте формата даты первого файла на некоторых системах возможно понадобится переключить локаль (мне в utf8 понадобилось).

Примеры слишком короткие для демонстрации работоспособности.

Код
> temp.time<-read.table("time.txt", header=TRUE)
> temp.time$date<-as.Date(temp.time$date)
> str(temp.time)
'data.frame':   5 obs. of  2 variables:
$ temp: num  5.37 2.13 1.6 -0.17 2.53
$ date:Class 'Date'  num [1:5] 10701 10702 10703 10704 10705
>
> library(caTools)
> temp.time <- data.frame(temp.time, avgtemp=runmean(temp.time$temp, 3, alg= "exact", endrule="mean", align =  "right"))
> temp.time
   temp       date  avgtemp
1  5.37 1999-04-20 3.750000
2  2.13 1999-04-21 3.750000
3  1.60 1999-04-22 3.033333
4 -0.17 1999-04-23 1.186667
5  2.53 1999-04-24 1.320000

> lct <- Sys.getlocale("LC_TIME"); Sys.setlocale("LC_TIME", "C")
> data<-read.table("data.txt", header=TRUE)
> data$studydate<-as.Date(data$studydate, "%d%b%Y")
> data
  FID  studydate week
1   1 1999-04-28    1
2   1 1999-05-07    2
3   1 1999-05-14    3
4   1 1999-05-21    4
> str(data)
'data.frame':   4 obs. of  3 variables:
$ FID      : int  1 1 1 1
$ studydate:Class 'Date'  num [1:4] 10709 10718 10725 10732
$ week     : int  1 2 3 4

> Sys.setlocale("LC_TIME", lct)

> temp.time$avgtemp[temp.time$date==data[1,2]]


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

Сообщений в этой теме
- Olga_   Помогите, пожалуйста, написать алгоритм для R   29.08.2012 - 12:02
- - p2004r   Цитата(Olga_ @ 29.08.2012 - 12:02) Д...   29.08.2012 - 16:37
- - Olga_   Спасибо! У меня вопрос, почему к(width of mov...   29.08.2012 - 18:43
|- - p2004r   Цитата(Olga_ @ 29.08.2012 - 18:43) С...   29.08.2012 - 20:57
|- - Olga_   Цитата(p2004r @ 29.08.2012 - 19:57) ...   29.08.2012 - 21:17
||- - p2004r   Цитата(Olga_ @ 29.08.2012 - 21:17) П...   30.08.2012 - 10:44
||- - Olga_   Цитата(p2004r @ 30.08.2012 - 09:44) ...   30.08.2012 - 12:02
||- - p2004r   Цитата(Olga_ @ 30.08.2012 - 12:02) И...   30.08.2012 - 15:37
||- - Olga_   Цитата(p2004r @ 30.08.2012 - 14:37) ...   30.08.2012 - 16:10
||- - p2004r   Цитата(Olga_ @ 30.08.2012 - 16:10) Н...   30.08.2012 - 19:50
||- - Olga_   Цитата(p2004r @ 30.08.2012 - 18:50) ...   30.08.2012 - 21:16
|- - Olga_   ---   29.08.2012 - 21:17
- - Olga_   Что то у меня не получается.. Мой код airpolluti...   11.09.2012 - 11:50
|- - p2004r   ну а файлы данных запаковать в rar и выложить?   12.09.2012 - 12:30
- - Olga_   Решили оставить вариант с уровнем полютантов за пр...   6.11.2012 - 18:08
|- - p2004r   Цитата(Olga_ @ 6.11.2012 - 18:08) Ре...   7.11.2012 - 21:49
- - Olga_   Спасибо, я уже сама нашла и создала искусственные ...   7.11.2012 - 22:10
|- - p2004r   Цитата(Olga_ @ 7.11.2012 - 22:10) Сп...   8.11.2012 - 21:18
- - Olga_   Временной ряд уже создан, это все те же данные FID...   8.11.2012 - 22:30
|- - p2004r   Цитата(Olga_ @ 8.11.2012 - 22:30) Вр...   8.11.2012 - 23:33
- - Olga_   У меня time series data с нерегулярными интервалам...   9.11.2012 - 00:32
- - p2004r   Ха, какой тонкий тролинг не говорим попусту, а ч...   9.11.2012 - 12:57


Добавить ответ в эту темуОткрыть тему