Criação de data.frame com valores médios de variaveis

Prezados(as) Tenho um banco de dados com as seguintes variáveis (colunas): Tipo Trat Tempo Triplicata acidezKOH e acidezOLEIC Segue o CMR com a estrutura do meu banco de dados: d1=structure(list(Tipo = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("TI1", "TI2", "TI3"), class = "factor"), Trat = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("TR1", "TR2", "TR3"), class = "factor"), Tempo = c(0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L), Triplicata = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L ), acidezKOH = c(2.29, 2.29, 2.38, 6.16, 6.16, 5.92, 4.82, 5.04, 5.04, 3.37, 3.54, 3.69, 5.92, 5.92, 5.71, 5.8, 5.75, 5.72, 3.16, 3.02, 3.22, 5.33, 5.33, 5.3, 5.66, 5.75, 5.7, 0.23, 0.23, 0.23, 0.3, 0.3, 0.3, 0.34, 0.31, 0.31, 0.26, 0.29, 0.26, 0.33, 0.36, 0.33, 0.43, 0.4, 0.43, 0.26, 0.26, 0.29, 0.3, 0.33, 0.3, 0.34, 0.31, 0.31, 0.09, 0.09, 0.09, 0.33, 0.33, 0.33, 0.37, 0.37, 0.34, 0.14, 0.14, 0.14, 0.3, 0.3, 0.3, 0.31, 0.34, 0.34, 0.57, 0.57, 0.57, 0.33, 0.33, 0.33, 0.8, 0.77, 0.8), acidezOLEIC = c(1.15, 1.15, 1.2, 3.1, 3.1, 2.97, 2.42, 2.54, 2.54, 1.69, 1.78, 1.85, 2.98, 2.98, 2.87, 2.92, 2.89, 2.87, 1.59, 1.52, 1.62, 2.68, 2.68, 2.66, 2.85, 2.89, 2.86, 0.11, 0.11, 0.11, 0.15, 0.15, 0.15, 0.17, 0.16, 0.16, 0.13, 0.14, 0.13, 0.17, 0.18, 0.17, 0.22, 0.2, 0.21, 0.13, 0.13, 0.14, 0.15, 0.17, 0.15, 0.17, 0.16, 0.16, 0.04, 0.04, 0.04, 0.17, 0.17, 0.17, 0.19, 0.19, 0.17, 0.07, 0.07, 0.07, 0.15, 0.15, 0.15, 0.17, 0.16, 0.16, 0.29, 0.29, 0.29, 0.17, 0.17, 0.17, 0.4, 0.39, 0.4)), .Names = c("Tipo", "Trat", "Tempo", "Triplicata", "acidezKOH", "acidezOLEIC"), class = "data.frame", row.names = c(NA, -81L)) Preciso criar um banco de dados (data.frame) com as colunas: Tipo Trat Tempo e mais as colunas acidezKOH e acidezOLEIC com a média das três Triplicatas. Tentei fazer com a função tapply, mas, não resolve porque não cria uma estrutura de data.frame. Gostaria de ter auxilio da lista para este problema. Desde já agradeço. Cordialmente, -- Gilenio Borges Fernandes Professor Associado IV (Aposentado) Universidade Federal da Bahia Instituto de Matemática Departamento de Estatística Av. Adhemar de Barros, s/n – Ondina. 40.170-110 - Salvador - BA, Brasil Tel.: (071)3283-6340/6341/6337 Fax: (071)3283-6336 URL: http://lattes.cnpq.br/6764860618464860

Segue uma possivel solução com o aggregate, mas ele faz exatamente a mesma coisa que o tapply, so mudam os argumentos.
temp1<-aggregate(x=d1$acidezKOH, by=list(d1$Tipo,d1$Trat,d1$Tempo), FUN=mean) temp2<-aggregate(x=d1$acidezOLEIC, by=list(d1$Tipo,d1$Trat,d1$Tempo), FUN=mean) dmedia<-data.frame(temp1,temp2[,4]) colnames(dmedia) [1] "Group.1" "Group.2" "Group.3" "x" "temp2...4." colnames(dmedia)<-c("Tipo","Trat","Tempo","acidezKOH", "acidezOLEIC") head(dmedia) Tipo Trat Tempo acidezKOH acidezOLEIC 1 TI1 TR1 0 2.320000 1.1666667 2 TI2 TR1 0 0.230000 0.1100000 3 TI3 TR1 0 0.090000 0.0400000 4 TI1 TR2 0 3.533333 1.7733333 5 TI2 TR2 0 0.270000 0.1333333 6 TI3 TR2 0 0.140000 0.0700000 class(dmedia) [1] "data.frame"
Vai existir muitas formas de isso, alguma provavelmente mais rápidas, mas assim eu so calculei as médias guardando em dois objetos temporariors, depois eu coloquei tudo num dataframe e modifiquei os nomes das colunas para ficar bonitinho. Ja da para quebrar o galho. -- Grato Augusto C. A. Ribas Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org> Github: https://github.com/Squiercg Lattes: http://lattes.cnpq.br/7355685961127056

A aggregate() retorna resultado com colunas com nomes corretos se passar via fórmula. Além dela, a plyr::ddply() é uma função muito interessante para operações desse tipo. Segue exemplo das duas no CMR. res <- aggregate(cbind(acidezKOH, acidezOLEIC)~Trat+Tipo+Tempo, data=d1, FUN=mean) require(plyr) colwise(mean, is.numeric)(d1) colwise(mean, ~acidezKOH+acidezOLEIC)(d1) ddply(d1, .(Trat, Tipo, Tempo), .fun=colwise(mean, is.numeric)) ddply(d1, .(Trat, Tipo, Tempo), .fun=colwise(mean, ~acidezKOH+acidezOLEIC)) À disposição. Walmes.

Olhe a função aggregate, ela faz algo parecido com o que você precisa De: R-br [mailto:r-br-bounces@listas.c3sl.ufpr.br] Em nome de Gilenio Borges Fernandes Enviada em: domingo, 14 de setembro de 2014 15:09 Para: r-br@listas.c3sl.ufpr.br Assunto: [R-br] Criação de data.frame com valores médios de variaveis Prezados(as) Tenho um banco de dados com as seguintes variáveis (colunas): Tipo Trat Tempo Triplicata acidezKOH e acidezOLEIC Segue o CMR com a estrutura do meu banco de dados: d1=structure(list(Tipo = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("TI1", "TI2", "TI3"), class = "factor"), Trat = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("TR1", "TR2", "TR3"), class = "factor"), Tempo = c(0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L), Triplicata = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L ), acidezKOH = c(2.29, 2.29, 2.38, 6.16, 6.16, 5.92, 4.82, 5.04, 5.04, 3.37, 3.54, 3.69, 5.92, 5.92, 5.71, 5.8, 5.75, 5.72, 3.16, 3.02, 3.22, 5.33, 5.33, 5.3, 5.66, 5.75, 5.7, 0.23, 0.23, 0.23, 0.3, 0.3, 0.3, 0.34, 0.31, 0.31, 0.26, 0.29, 0.26, 0.33, 0.36, 0.33, 0.43, 0.4, 0.43, 0.26, 0.26, 0.29, 0.3, 0.33, 0.3, 0.34, 0.31, 0.31, 0.09, 0.09, 0.09, 0.33, 0.33, 0.33, 0.37, 0.37, 0.34, 0.14, 0.14, 0.14, 0.3, 0.3, 0.3, 0.31, 0.34, 0.34, 0.57, 0.57, 0.57, 0.33, 0.33, 0.33, 0.8, 0.77, 0.8), acidezOLEIC = c(1.15, 1.15, 1.2, 3.1, 3.1, 2.97, 2.42, 2.54, 2.54, 1.69, 1.78, 1.85, 2.98, 2.98, 2.87, 2.92, 2.89, 2.87, 1.59, 1.52, 1.62, 2.68, 2.68, 2.66, 2.85, 2.89, 2.86, 0.11, 0.11, 0.11, 0.15, 0.15, 0.15, 0.17, 0.16, 0.16, 0.13, 0.14, 0.13, 0.17, 0.18, 0.17, 0.22, 0.2, 0.21, 0.13, 0.13, 0.14, 0.15, 0.17, 0.15, 0.17, 0.16, 0.16, 0.04, 0.04, 0.04, 0.17, 0.17, 0.17, 0.19, 0.19, 0.17, 0.07, 0.07, 0.07, 0.15, 0.15, 0.15, 0.17, 0.16, 0.16, 0.29, 0.29, 0.29, 0.17, 0.17, 0.17, 0.4, 0.39, 0.4)), .Names = c("Tipo", "Trat", "Tempo", "Triplicata", "acidezKOH", "acidezOLEIC"), class = "data.frame", row.names = c(NA, -81L)) Preciso criar um banco de dados (data.frame) com as colunas: Tipo Trat Tempo e mais as colunas acidezKOH e acidezOLEIC com a média das três Triplicatas. Tentei fazer com a função tapply, mas, não resolve porque não cria uma estrutura de data.frame. Gostaria de ter auxilio da lista para este problema. Desde já agradeço. Cordialmente, -- Gilenio Borges Fernandes Professor Associado IV (Aposentado) Universidade Federal da Bahia Instituto de Matemática Departamento de Estatística Av. Adhemar de Barros, s/n – Ondina. 40.170-110 - Salvador - BA, Brasil Tel.: (071)3283-6340/6341/6337 Fax: (071)3283-6336 URL: http://lattes.cnpq.br/6764860618464860

Leonardo, Bom dia. Tente o seguinte script com a ajuda do pacote plyr, mas se quiser mais eficiência de uso com computancão paralela, use o pacote dplyr. ### ----------------------------------- ### ---------------------------------### d1$Triplicata <- factor(d1$Triplicata) str(d1) library(plyr) ddply(d1, c("Tipo", "Trat", "Tempo"), summarise, acidezKOH= mean(acidezKOH), acidezOLEIC = mean(acidezOLEIC)) 2014-09-15 9:59 GMT-03:00 Leonard de Assis <assis.leonard@gmail.com>:
Olhe a função aggregate, ela faz algo parecido com o que você precisa
*De:* R-br [mailto:r-br-bounces@listas.c3sl.ufpr.br] *Em nome de *Gilenio Borges Fernandes *Enviada em:* domingo, 14 de setembro de 2014 15:09 *Para:* r-br@listas.c3sl.ufpr.br *Assunto:* [R-br] Criação de data.frame com valores médios de variaveis
Prezados(as)
Tenho um banco de dados com as seguintes variáveis (colunas):
Tipo Trat Tempo Triplicata acidezKOH e acidezOLEIC
Segue o CMR com a estrutura do meu banco de dados:
d1=structure(list(Tipo = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("TI1", "TI2",
"TI3"), class = "factor"), Trat = structure(c(1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("TR1",
"TR2", "TR3"), class = "factor"), Tempo = c(0L, 0L, 0L, 3L, 3L,
3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L,
3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L,
0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L,
6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L,
6L, 6L, 6L, 0L, 0L, 0L, 3L, 3L, 3L, 6L, 6L, 6L), Triplicata = c(1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L
), acidezKOH = c(2.29, 2.29, 2.38, 6.16, 6.16, 5.92, 4.82, 5.04,
5.04, 3.37, 3.54, 3.69, 5.92, 5.92, 5.71, 5.8, 5.75, 5.72, 3.16,
3.02, 3.22, 5.33, 5.33, 5.3, 5.66, 5.75, 5.7, 0.23, 0.23, 0.23,
0.3, 0.3, 0.3, 0.34, 0.31, 0.31, 0.26, 0.29, 0.26, 0.33, 0.36,
0.33, 0.43, 0.4, 0.43, 0.26, 0.26, 0.29, 0.3, 0.33, 0.3, 0.34,
0.31, 0.31, 0.09, 0.09, 0.09, 0.33, 0.33, 0.33, 0.37, 0.37, 0.34,
0.14, 0.14, 0.14, 0.3, 0.3, 0.3, 0.31, 0.34, 0.34, 0.57, 0.57,
0.57, 0.33, 0.33, 0.33, 0.8, 0.77, 0.8), acidezOLEIC = c(1.15,
1.15, 1.2, 3.1, 3.1, 2.97, 2.42, 2.54, 2.54, 1.69, 1.78, 1.85,
2.98, 2.98, 2.87, 2.92, 2.89, 2.87, 1.59, 1.52, 1.62, 2.68, 2.68,
2.66, 2.85, 2.89, 2.86, 0.11, 0.11, 0.11, 0.15, 0.15, 0.15, 0.17,
0.16, 0.16, 0.13, 0.14, 0.13, 0.17, 0.18, 0.17, 0.22, 0.2, 0.21,
0.13, 0.13, 0.14, 0.15, 0.17, 0.15, 0.17, 0.16, 0.16, 0.04, 0.04,
0.04, 0.17, 0.17, 0.17, 0.19, 0.19, 0.17, 0.07, 0.07, 0.07, 0.15,
0.15, 0.15, 0.17, 0.16, 0.16, 0.29, 0.29, 0.29, 0.17, 0.17, 0.17,
0.4, 0.39, 0.4)), .Names = c("Tipo", "Trat", "Tempo", "Triplicata",
"acidezKOH", "acidezOLEIC"), class = "data.frame", row.names = c(NA,
-81L))
Preciso criar um banco de dados (data.frame) com as colunas: Tipo Trat Tempo e mais as colunas acidezKOH e acidezOLEIC com a média das três Triplicatas. Tentei fazer com a função tapply, mas, não resolve porque não cria uma estrutura de data.frame. Gostaria de ter auxilio da lista para este problema.
Desde já agradeço.
Cordialmente,
--
Gilenio Borges Fernandes
Professor Associado IV (Aposentado) Universidade Federal da Bahia Instituto de Matemática Departamento de Estatística Av. Adhemar de Barros, s/n – Ondina. 40.170-110 - Salvador - BA, Brasil Tel.: (071)3283-6340/6341/6337 Fax: (071)3283-6336 URL: http://lattes.cnpq.br/6764860618464860
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Alisson Lucrecio da Costa
participantes (5)
-
Alisson Lucrécio
-
Augusto Ribas
-
Gilenio Borges Fernandes
-
Leonard de Assis
-
walmes .