Страница 1 из 1
Расчёт показателей с привязкой к фактору
Добавлено: 05 июл 2013, 17:24
ymr3R9Jge
Вопрос в следующем: имеем таблицу с результатами опробования скважин (пример прилагается). Нужно получить производную таблицу, которая будет содержать номера скважин и средние содержания химических элементов (т.е. для каждой скважины должна остаться одна строка - со средними значениями).
Re: Расчёт показателей с привязкой к фактору
Добавлено: 05 июл 2013, 20:33
Максим Дубинин
см.
aggregate
tapply
Re: Расчёт показателей с привязкой к фактору
Добавлено: 06 июл 2013, 14:40
Иван Стрельников
Код: Выделить всё
#skv--исходная таблица
skv.list<-split(skv,as.factor(skv[,1]))
skv.res<-NULL
for(i in (1:length(skv.list))){
skv.res<-rbind(skv.res,apply(skv.list[[i]],2,mean))
}
Re: Расчёт показателей с привязкой к фактору
Добавлено: 06 июл 2013, 19:58
ymr3R9Jge
Максим Дубинин писал(а):см.
aggregate
tapply
Извиняюсь за запоздалый ответ... Всё до примитива просто! Для приведённой в качестве примера таблицы:
Код: Выделить всё
>attach(skv_forum)
>skv_forum.mean<- aggregate(skv_forum, by=list(Num_skv), FUN=mean, na.rm=FALSE)
Если сортировку нужно провести ещё по какому-нибудь фактору (например - по типу пород в скважине) - тогда этот фактор через запятую нужно добавить в список: by=list(Num_skv, poroda).
Re: Расчёт показателей с привязкой к фактору
Добавлено: 07 июл 2013, 06:47
gamm
ymr3R9Jge писал(а):>attach(skv_forum)
а вот этого никогда не делайте, если не хотите получить головную боль. После attach имена (из таблицы) попадают в глобальное пространство имен, и перекрывают системные. При совпадении имен вызываемые программы из пакетов начнут работать неправильно, ладно если просто ошибку выдадут, а то могут и ерунды насчитать.
Re: Расчёт показателей с привязкой к фактору
Добавлено: 15 июл 2013, 08:24
ymr3R9Jge
gamm писал(а):а вот этого никогда не делайте, если не хотите получить головную боль...
Да, всё прекрасно работает и с непосредственной ссылкой на переменные:
Код: Выделить всё
>skv_forum.mean<- aggregate(skv_forum, by=list(skv_forum$Num_skv), FUN=mean, na.rm=FALSE)