[R-br] ddply - obter ganho de peso médio

Fernando Souza nandodesouza em gmail.com
Quinta Fevereiro 26 12:22:51 BRT 2015


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)



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