[R-br] ddply - obter ganho de peso médio
Rubem Kaipper Ceratti
rubem_ceratti em yahoo.com.br
Quinta Fevereiro 26 13:50:52 BRT 2015
Fernando,
Você teria que criar um vetor 'ganho' dentro da função:
A <- function(x){ ganho <- numeric(length(x$Pesos)-1) # Vetor para armazenar valores for (i in 1:length(x$Pesos)-1){ difPeso <- x$Pesos[i+1] -x$Pesos[i] dias <-as.numeric( x$DATA[i+1] - x$DATA[i]) ganho[i]<-difPeso/dias # Gostaria de guardar este resultado em } return(mean(ganho))}
Uma alternativa seria usar o pacote 'dplyr' (só não carregue o 'plyr' na mesma sessão):
library(dplyr)
GPD1 <- GPD %>% group_by(ANIMAL) %>% mutate(DifPeso = c(NA, diff(Pesos)), Dias = c(NA, diff(DATA)), GanhoPorDia = DifPeso/Dias) %>% summarize(GanhoMedio = mean(GanhoPorDia, na.rm = TRUE))
De: Fernando Souza <nandodesouza em gmail.com>
Para: "r-br em listas.c3sl.ufpr.br" <r-br em listas.c3sl.ufpr.br>
Enviadas: Quinta-feira, 26 de Fevereiro de 2015 12:22
Assunto: [R-br] ddply - obter ganho de peso médio
Caros amigos
Estou tentando criar um função para calcular o ganho de peso médio. Eu
quero calcular o ganho de peso por animal, sendo o ganho de peso a
média dos ganhos obtidas a cada duas medidas sucessivas. Eu estou
utilizando a função ddply() do pacote {plyr} onde divido o dataframe em
grupos por ANIMAL e aplico a seguinte função a cada grupo.
No entanto eu preciso que o ganho de peso obtido entre duas medidas
consecutivas para um animal seja armazenado em um vetor, para em seguida
fazer a média dos ganhos de pesos. No entanto não consigo criar esse
vetor.Quando utilizo o comando abaixo, a função ddply retorna uma
mensagem de erro indicando que não foi possível encontrar o objeto ganho.
Como posso resolver esse problema?
install.packages("plyr")
library(plyr)
A <- function(x){
for (i in 1:length(x$Pesos)-1){
difPeso <- x$Pesos[i+1] -x$Pesos[i]
dias <-as.numeric( x$DATA[i+1] - x$DATA[i])
ganho [i]<-difPeso/dias # Gostaria de guardar este resultado em
um vetor e retornar somente a média
}
return(mean(ganho))
}
ddply(GPD,.(ANIMAL),A)
GPD<- structure(list(DATA = structure(c(16425, 16437, 16451, 16463,
16425, 16437, 16451, 16463, 16425, 16437, 16451, 16463, 16425,
16437, 16454, 16463, 16425, 16437, 16451, 16463, 16425, 16437,
16451, 16463, 16425, 16437, 16451, 16463, 16425, 16437, 16451,
16463, 16425, 16437, 16451, 16463, 16425, 16437, 16451, 16463,
16425, 16437, 16451, 16463, 16425, 16437, 16451, 16463, 16425,
16437, 16451, 16463, 16425, 16437, 16451, 16463, 16425, 16437,
16451, 16463, 16425, 16437, 16451, 16463, 16425, 16437, 16451,
16463, 16425, 16437, 16451, 16463, 16425, 16437, 16451, 16463,
16425, 16437, 16451, 16463, 16425, 16437, 16451, 16463, 16425,
16437, 16451, 16463, 16425, 16437, 16451, 16463, 16425, 16437,
16451, 16463), class = "Date"), ANIMAL = structure(c(1L, 1L,
1L, 1L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 10L, 10L, 10L, 10L, 15L,
15L, 15L, 15L, 19L, 19L, 19L, 19L, 2L, 2L, 2L, 2L, 7L, 7L, 7L,
7L, 13L, 13L, 13L, 13L, 16L, 16L, 16L, 16L, 17L, 17L, 17L, 17L,
24L, 24L, 24L, 24L, 3L, 3L, 3L, 3L, 8L, 8L, 8L, 8L, 9L, 9L, 9L,
9L, 12L, 12L, 12L, 12L, 20L, 20L, 20L, 20L, 22L, 22L, 22L, 22L,
6L, 6L, 6L, 6L, 11L, 11L, 11L, 11L, 14L, 14L, 14L, 14L, 18L,
18L, 18L, 18L, 21L, 21L, 21L, 21L, 23L, 23L, 23L, 23L), .Label = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15", "16", "17", "19", "20", "21", "22", "23", "24", "25"
), class = "factor"), TRAT = structure(c(4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 1L,
1L, 1L, 1L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 4L, 4L, 4L, 4L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("C",
"T1", "T2", "T3"), class = "factor"), CONSUMO = c(0.6847039559,
0.659115454, 0.8601238438, 0.9662238017, 0.653160515, 0.76204388,
0.829147492, 1.0781859662, 0.5080284272, 0.7916373952, 0.7176244537,
1.2145475842, 0.5901562027, 0.5354316571, 0.9090091044, 0.8230424453,
0.800990936, 0.8258115771, 1.0350092142, 1.1778239333, 0.4218995736,
0.748182177, 0.9008559089, 0.7793604982, 0.8503107855, 0.8743924455,
1.0149210147, 1.2117686308, 1.0008721911, 0.9224992, 1.0628987486,
1.3235606054, 0.5847562394, 0.5971266995, 0.9015356047, 1.1422017785,
0.5506020875, 0.8996851452, 1.1010903098, 1.2777703226, 0.7757312968,
0.7327742822, 0.9957085833, 1.299725333, 0.6184034276, 0.7019017179,
0.8252818991, 0.7725886442, 0.57584, 0.8274993578, 0.9568347616,
1.0673499251, 0.7403614923, 0.7388590798, 0.7659735658, 1.0623794866,
0.6109657028, 0.683632284, 0.8188398169, 0.9643152772, 0.6384021189,
1.0495757074, 1.0262077037, 1.3312530279, 0.9202033913, 0.8721430158,
1.038471733, 1.1844675851, 0.8142008896, 1.0393409306, 1.2542648171,
1.3544221328, 0.5135583976, 0.5789023337, 0.7218802192, 1.0082128242,
0.7826673895, 0.9077870689, 0.9303001507, 1.4221483678, 0.8357668107,
0.8984098957, 1.0042573313, 1.5336138147, 0.407296, 0.6941073063,
0.8535336465, 0.9517448657, 0.5418470982, 0.5011396696, 0.6771379951,
0.6793475586, 0.7004441364, 0.9387915881, 1.0943207226, 1.2500940543
), Pesos = c(14.75, 15.35, 16.8, 18.4, 17.6, 17.95, 19.2, 21,
19.4, 20.05, 21.4, 23.4, 14.55, 14.4, 15.1, 16.5, 19.1, 19.3,
20.4, 21.9, 16.3, 17.45, 18.9, 20.6, 22.25, 22.5, 23.5, 25.2,
22.8, 21.9, 24.2, 26.6, 18.45, 18.3, 19.5, 21.2, 21.8, 23.2,
22, 24.9, 18.6, 19.05, 20, 21, 17, 17.9, 18.5, 19.45, 20.6, 21.3,
22.6, 24.5, 19.1, 19.4, 20.1, 22.25, 16.65, 16.95, 17.8, 19.4,
22.8, 23.8, 24.4, 26.3, 19.3, 20.15, 21.9, 23.6, 22.9, 24.1,
25.6, 26.45, 16.65, 16.55, 17.3, 18.85, 22.4, 23.1, 25.4, 27.3,
22.9, 22.95, 25, 26.9, 16.7, 18.15, 19.7, 20.6, 14.05, 14.9,
15.6, 16.4, 18.9, 19.85, 21.8, 23.2)), .Names = c("DATA", "ANIMAL",
"TRAT", "CONSUMO", "Pesos"), row.names = c(NA, -96L), class = "data.frame")
--
Fernando Antônio de Souza
Zootecnista,Dsc. Nutrição e alimentação animal (UFMG)
Lattes: http://lattes.cnpq.br/6519538815038307
e-mail:nandodesouza em gmail.com
(82)9618-6457 (tim)
(82)8113-8781 (vivo)
(82)3313-8781 (net)
(31)9784-5273 (vivo-MG)
_______________________________________________
R-br mailing list
R-br em 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.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20150226/74311f38/attachment.html>
Mais detalhes sobre a lista de discussão R-br