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

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

> Вопрос по Data Management, Data Management in R
jeruzale
сообщение 10.07.2012 - 12:56
Сообщение #1





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



Добрый день!
Пишу вам от безысходности - уже 2 недели ищу ответ на мою проблему, но пока не нашел ответа.
Пытался писать сложными формулами в R , но ничего не получилось...

Не могли бы вы помочь?

Я загрузил доц файл, где объяснил свою проблему визуально.

Заранее всем спасибо!
Прикрепленные файлы
Прикрепленный файл  Question_dataManipul.doc ( 36,5 килобайт ) Кол-во скачиваний: 270
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
 
Открыть тему
Ответов (1 - 1)
p2004r
сообщение 10.07.2012 - 13:43
Сообщение #2





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



Цитата(jeruzale @ 10.07.2012 - 12:56) *
Добрый день!
Пишу вам от безысходности - уже 2 недели ищу ответ на мою проблему, но пока не нашел ответа.
Пытался писать сложными формулами в R , но ничего не получилось...

Не могли бы вы помочь?

Я загрузил доц файл, где объяснил свою проблему визуально.

Заранее всем спасибо!


это делает например пакет plyr

например вот такой страхолюдной формулой в своих данных я намедни извлекал ранг абитуриента в его школе

Код
data.baza<-ddply(data,
                 .(data$Код.УО),
                 function(i) data.frame(i,
                                        ResPhys.UOrank=rank(max(i$ResPhys.ball, na.rm=TRUE)-i$ResPhys.ball,
                                                            ties.method ="min"),
                                        UO.number=nrow(i)))


у Вас ситуация проще

Код
> ddply(table, .(table$ID.worker,table$Year), function(i) colMeans(i))
  table$ID.worker table$Year ID.worker Year Systolic.blood.pressure
1             468       1968       468 1968                   123.0
2             468       1970       468 1970                   120.0
3             500       1985       500 1985                   121.5
4             500       1990       500 1990                   124.0
5             555       1980       555 1980                   125.0
  Diastolic.blood.pressure
1                     88.0
2                     80.0
3                     83.5
4                     87.0
5                     85.0


ps даже проще можно ddply(table, .(table$ID.worker,table$Year), colMeans)

pps или вот так

Код
> ddply(table, .(table$ID.worker,table$Year), function(i) colMeans(i[,3:4]))
  table$ID.worker table$Year Systolic.blood.pressure Diastolic.blood.pressure
1             468       1968                   123.0                     88.0
2             468       1970                   120.0                     80.0
3             500       1985                   121.5                     83.5
4             500       1990                   124.0                     87.0
5             555       1980                   125.0                     85.0

> aggregate(table[,3:4], list(table$ID.worker,table$Year), mean)
  Group.1 Group.2 Systolic.blood.pressure Diastolic.blood.pressure
1     468    1968                   123.0                     88.0
2     468    1970                   120.0                     80.0
3     555    1980                   125.0                     85.0
4     500    1985                   121.5                     83.5
5     500    1990                   124.0                     87.0


Сообщение отредактировал p2004r - 10.07.2012 - 14:17


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

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