[R-br] RES: Criar função para tirar a média entre grupos sob condições dadas
Éder Comunello
comunello.eder em gmail.com
Sexta Janeiro 29 09:41:21 BRST 2016
Alexandre, bom dia!
Não havia atentado para o problema na importação das tabelas, sendo
necessário definir as classes. Além disso, na função você deve se referir a
"db" antes que "tableFE" e "x" é definido internamente por lapply().
### <code r>
require(RCurl); require(XML)
url0 <- "https://www.dropbox.com/s/znmr0lwda2y6fc5/BD_teste2.html?dl=1"
url1 <- gsub("(^.*)(/s/.*)(\\?.*$)", "https://dl.dropboxusercontent.com\\2",
url0); url1
# [1] "https://dl.dropboxusercontent.com/s/znmr0lwda2y6fc5/BD_teste2.html"
page <- getURL(url1)
tableFE <- readHTMLTable(page, head=T)[[1]]
str(tableFE) ### todas variáveis estão como fatores - corrigir!
classes <- c(rep("factor", 6), rep("numeric", 4), "factor")
tableFE <- readHTMLTable(page, head=T, colClasses=classes)[[1]]
str(tableFE) ### OK!
head(tableFE)
##Agregando os resultados
aggPestFE <- function(db=tableFE, key="descricao"){
lista <- split(db, db[key])
result <- lapply(lista, function(x) aggregate(x[,7:8],
by=list(x[,3],x[,2],x[,5]), mean))
return(result)
}
### Devido aos "defaults", obtém mesmos resultados nas três formas que
seguem:
aggPestFE()[5]
aggPestFE(tableFE)[5]
aggPestFE(tableFE, "descricao")[5]
# $`Lagartas Desfolhadoras`
# Group.1 Group.2 Group.3 formiga_area qtd_destruido
# 1 GN Chale 26 0 62.5
# 2 RD Corrego da Coruja 26 0 50.0
# 3 GN Aeroporto II 28 0 75.0
### </code>
================================================
Éder Comunello
PhD Student in Agricultural Systems Engineering (USP/Esalq)
Brazilian Agricultural Research Corporation (Embrapa)
Dourados, MS, Brazil [22 16.5'S, 54 49.0'W]
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160129/563e27bd/attachment.html>
Mais detalhes sobre a lista de discussão R-br