[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