[R-br] Criar função para tirar a média entre grupos sob condições dadas

ASANTOS alexandresantosbr em yahoo.com.br
Quinta Janeiro 21 11:07:14 BRST 2016


Caros listeiros,


    Estou tentando criar uma função aggPestFE que para uma primeira 
variável se for "Formiga", vai tirar a media da coluna 5, mas se for 
"Besouros" ou "Barata" vai tira a média da coluna 4. Sendo que quero o 
resultado dado em forma de list, ficando o meu resultado:

[[1]]
[1] "Barata"

[[1]][[3]]
         Projeto Talhao Injuria(%)
1    Abre Campo     15        25
2 Volta Redonda     73        0
3       Vitoria     74        50


[[2]]
[1] "Besouros"

[[1]][[3]]
         Projeto Talhao Injuria(%)
1    Abre Campo     15        0
2 Volta Redonda     73        25
3       Vitoria     74        50

[[2]]
[1] "Formiga"

[[1]][[3]]
         Projeto Talhao   Area  (m2)
1    Abre Campo     15        12.5
2 Volta Redonda     73        1.5
3       Vitoria     74        23.8


            Para isso estou tentando:


##Dados artificiais

Bichos<-c("Besouros","Barata","Formiga","Barata","Formiga","Besouros","Formiga",
"Besouros","Barata","Formiga","Barata","Formiga","Besouros","Formiga","Formiga")

Talhao<-c(73,15,74,75,15,15,15,73,15,15,73,15,73,74,74)


Projeto<-c("Abre Campo", "Volta Redonda","Vitoria","Abre Campo", "Volta 
Redonda",
"Vitoria","Abre Campo", "Volta Redonda","Vitoria","Abre Campo", "Volta 
Redonda",
"Vitoria","Abre Campo", "Volta Redonda","Vitoria")

Injuria<-c(25,100,0,25,0,100,0,50,25,0,25,0,25,0,0)



Area<-c(0,0,12.5,0,7.5,0,1.5,0,0,23.8,0,5.3,0,2.0,11.3)


tableFE<-data.frame(Bichos, Talhao, Projeto, Injuria, Area) ## Banco de 
dados criado


##Função

aggPestFE<-function(x, db=tableFE){


mylist <- list()




      if (tableFE[,1] != "Formigas") {

         for (i in length(tableFE[,1])){

         GP_FE2<-tableFE[tableFE[,1]==tableFE[i],]
         aggdata <-aggregate(GP_FE2[,4], list(GP_FE2[,3],GP_FE2[,2]), mean)
colnames(aggdata)<-c("Regional","Projeto","Talhão","Injúria média (%)")
         tmp <- list(aggdata)
         mylist[NPRAGS[i]] <- tmp
         result<-mylist
         return(result)
         }


      else if (tableFE[,1] == "Formigas") {

         GP_FE2<-[tableFE[,1]
         aggdata <-aggregate(GP_FE2[,5], list(GP_FE2[,3],GP_FE2[,2]), mean)
colnames(aggdata)<-c("Regional","Projeto","Talhão","Injúria média (%)")
         tmp <- list(aggdata)
         mylist[NPRAGS[i]] <- tmp
         result<-mylist
         return(result)
         }
         }

RES<-list(result,aggdata3)
result<-RES
return(result)
}


#Teste
aggPestFE(tableFE)
#

    Sem sucesso, alguém poderia me ajudar?

Obrigado e abraços,






-- 
======================================================================
Alexandre dos Santos
Proteção Florestal
IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso
Campus Cáceres
Caixa Postal 244
Avenida dos Ramires, s/n
Bairro: Distrito Industrial
Cáceres - MT                      CEP: 78.200-000
Fone: (+55) 65 8132-8112 (TIM)   (+55) 65 9686-6970 (VIVO)
e-mails:alexandresantosbr em yahoo.com.br
         alexandre.santos em cas.ifmt.edu.br
Lattes: http://lattes.cnpq.br/1360403201088680
OrcID: orcid.org/0000-0001-8232-6722
Researchgate: https://www.researchgate.net/profile/Alexandre_Santos10
LinkedIn: https://br.linkedin.com/in/alexandre-dos-santos-87961635
======================================================================



Mais detalhes sobre a lista de discussão R-br