![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#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
|
|
![]() Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 ![]() |
Добрый день. Помогите, пожалуйста, написать алгоритм для 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 Спасибо! Пожалуйста! ![]() Я предлагаю посчитать скользящим окном среднее для всех дней в базе. При импорте формата даты первого файла на некоторых системах возможно понадобится переключить локаль (мне в 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]] ![]() |
|
![]() |
![]() |
![]() ![]() |