Ajuda (possivelmente simples) para reestruturar um data.frame

Pessoal, Ajuda ai que estou travado! #Tenho isso (desconsiderar a numeração das linhas) tra r y 1 A 1 2.70 2 A 2 3.02 3 A 3 3.25 4 A 4 3.21 5 A 5 3.04 6 A 6 3.07 7 B 1 1.16 8 B 2 1.16 9 B 3 0.91 10 B 4 0.93 11 B 5 0.82 12 B 6 0.71 13 C 1 3.01 14 C 2 2.91 15 C 3 3.14 16 C 4 2.96 17 C 5 3.01 18 C 6 2.93 19 D 1 4.88 20 D 2 4.68 21 D 3 5.20 22 D 4 4.94 23 D 5 5.34 24 D 6 5.07 25 E 1 4.89 26 E 2 5.26 27 E 3 5.07 28 E 4 5.14 29 E 5 5.47 30 E 6 4.98 # Para economizar espaço em um relatório (que uso muito) preciso disso (idem): tra r y tra r y tra r y tra r y tra r y 1 A 1 2.70 B 1 1.16 C 1 3.01 D 1 4.88 E 1 4.89 2 A 2 3.02 B 2 1.16 C 2 2.91 D 2 4.68 E 2 5.26 3 A 3 3.25 B 3 0.91 C 3 3.14 D 3 5.20 E 3 5.07 4 A 4 3.21 B 4 0.93 C 4 2.96 D 4 4.94 E 4 5.14 5 A 5 3.04 B 5 0.82 C 5 3.01 D 5 5.34 E 5 5.47 6 A 6 3.07 B 6 0.71 C 6 2.93 D 6 5.07 E 6 4.98 # Fiz na "mão grande" usando "cbind" assim dados.tb <- cbind(dados.q1[1:6,], dados.q1[7:12,], dados.q1[13:18,], dados.q1[19:24,], dados.q1[25:30,]) Contudo, creio que deve ter uma solução mais racional e genérica para quando mudar o número de tratamentos e repetições! Tentei split, pacotes doBy e reshape, mas não fui bem sucedido. Para reprodução de possível solução pode usar 'df' abaixo: df <- data.frame(gl(n=5, k=6, lab=LETTERS[1:5]), rep(1:6, 5), 1:30) names(df) <- c('tra', 'r', 'y') Abs, -- ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria Estatistica - prof. Pleno UESC/DCET/Brasil joseclaudio.faria@gmail.com ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\

JC, Minha solução não retorna exatamente o que você quer, mas aproxima bem, veja df <- data.frame(gl(n=5, k=6, lab=LETTERS[1:5]), rep(1:6, 5), 1:30) names(df) <- c('tra', 'r', 'y') str(df) require(reshape) cast(df, r~tra, value="y")
cast(df, r~tra, value="y") r A B C D E 1 1 1 7 13 19 25 2 2 2 8 14 20 26 3 3 3 9 15 21 27 4 4 4 10 16 22 28 5 5 5 11 17 23 29 6 6 6 12 18 24 30
À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

do.call(cbind, split(df, df[['tra']])) 2011/7/13 Jose Claudio Faria <joseclaudio.faria@gmail.com>:
Pessoal,
Ajuda ai que estou travado!
#Tenho isso (desconsiderar a numeração das linhas) tra r y 1 A 1 2.70 2 A 2 3.02 3 A 3 3.25 4 A 4 3.21 5 A 5 3.04 6 A 6 3.07 7 B 1 1.16 8 B 2 1.16 9 B 3 0.91 10 B 4 0.93 11 B 5 0.82 12 B 6 0.71 13 C 1 3.01 14 C 2 2.91 15 C 3 3.14 16 C 4 2.96 17 C 5 3.01 18 C 6 2.93 19 D 1 4.88 20 D 2 4.68 21 D 3 5.20 22 D 4 4.94 23 D 5 5.34 24 D 6 5.07 25 E 1 4.89 26 E 2 5.26 27 E 3 5.07 28 E 4 5.14 29 E 5 5.47 30 E 6 4.98
# Para economizar espaço em um relatório (que uso muito) preciso disso (idem): tra r y tra r y tra r y tra r y tra r y 1 A 1 2.70 B 1 1.16 C 1 3.01 D 1 4.88 E 1 4.89 2 A 2 3.02 B 2 1.16 C 2 2.91 D 2 4.68 E 2 5.26 3 A 3 3.25 B 3 0.91 C 3 3.14 D 3 5.20 E 3 5.07 4 A 4 3.21 B 4 0.93 C 4 2.96 D 4 4.94 E 4 5.14 5 A 5 3.04 B 5 0.82 C 5 3.01 D 5 5.34 E 5 5.47 6 A 6 3.07 B 6 0.71 C 6 2.93 D 6 5.07 E 6 4.98
# Fiz na "mão grande" usando "cbind" assim dados.tb <- cbind(dados.q1[1:6,], dados.q1[7:12,], dados.q1[13:18,], dados.q1[19:24,], dados.q1[25:30,])
Contudo, creio que deve ter uma solução mais racional e genérica para quando mudar o número de tratamentos e repetições! Tentei split, pacotes doBy e reshape, mas não fui bem sucedido.
Para reprodução de possível solução pode usar 'df' abaixo:
df <- data.frame(gl(n=5, k=6, lab=LETTERS[1:5]), rep(1:6, 5), 1:30) names(df) <- c('tra', 'r', 'y')
Abs, -- ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria Estatistica - prof. Pleno UESC/DCET/Brasil joseclaudio.faria@gmail.com ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ _______________________________________________ R-br mailing list R-br@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.
-- Successful people ask better questions, and as a result, they get better answers. (Tony Robbins)

ou (depois de pensar mais um pouco, a solução exata) aux <- dlply(df, .(tra), fun=NULL) do.call(cbind, aux) À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
participantes (3)
-
Benilton Carvalho
-
Jose Claudio Faria
-
Walmes Zeviani