Empilhar variáveis em colunas para linhas

Caros Listeiros, Tenho um conjunto de dados artificiais abaixo, constituído de dados de contagem de três espécies (Esp1, Esp2 e Esp3) e duas variáveis trat e tempo. As três espécies e as variáveis estão dispostas em colunas, sendo: #Dados artificiais ----------------------------------- da <- expand.grid(trat=gl(4,1), tempo=1:10) X <- model.matrix(~trat+tempo, da); ncol(X) da$Esp1<-rpois(da[,1],5) da$Esp2<-rpois(da[,1],10) da$Esp3<-rpois(da[,1],15) head(da) trat tempo Esp1 Esp2 Esp3 1 1 1 4 13 8 2 2 1 7 7 17 3 3 1 3 12 16 4 4 1 8 8 13 5 1 2 4 13 22 6 2 2 4 8 10 Porém, eu gostaria de reorganizar o banco de dados e substituir as três espécies (Esp1, Esp2 e Esp3), por duas colunas, sendo uma coluna com o nome das espécies e uma nova coluna para os dados de contagem, representada por N, de forma que mantenha a correspondência entre as variáveis trat e tempo, ficando da seguinte maneira: head(new.da) trat tempo Esp N 1 1 1 Esp1 4 2 1 1 Esp2 13 3 1 1 Esp3 8 4 2 1 Esp1 7 5 2 1 Esp2 7 6 2 1 Esp3 17 Alguém poderia me indicar alguma função ou procedimento para fazer isso? Obrigado, -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ====================================================================== --- Este email foi escaneado pelo Avast antivírus. http://www.avast.com

Olá Alexandre Basta usar a função melt do pacote reshape2 library(reshape2) da.melt = melt(da, id = c("trat", "tempo"), variable.name="Esp", value.name="N") da.melt -- Salah Saudações!

Obrigado Salah Era exatamente isto que eu queria!! On 24/02/2015 21:50, izi wrote:
Olá Alexandre
Basta usar a função melt do pacote reshape2
library(reshape2)
da.melt = melt(da, id = c("trat", "tempo"), variable.name="Esp", value.name="N") da.melt
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ====================================================================== --- Este email foi escaneado pelo Avast antivírus. http://www.avast.com

Boa noite Pessoal, No meu CRM abaixo eu usei a função melt para empilhar, tem alguma outra função se eu desejo agora desempilhar o objeto criado e voltar o objeto a forma original, a função acast e dcast não funcionaram, Obrigado, #Dados artificiais ----------------------------------- da <- expand.grid(trat=gl(4,1), tempo=1:10) X <- model.matrix(~trat+tempo, da); ncol(X) da$Esp1<-rpois(da[,1],5) da$Esp2<-rpois(da[,1],10) da$Esp3<-rpois(da[,1],15) head(da) #Empilhar da.melt = melt(da, id = c("trat", "tempo"), variable.name="Esp",value.name="N") head(da.melt) #Mas e agora para à partir do objeto da.melt como eu volto para o objeto da? -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ====================================================================== On 25/02/2015 06:53, ASANTOS wrote:
Obrigado Salah
Era exatamente isto que eu queria!!
On 24/02/2015 21:50, izi wrote:
Olá Alexandre
Basta usar a função melt do pacote reshape2
library(reshape2)
da.melt = melt(da, id = c("trat", "tempo"), variable.name="Esp", value.name="N") da.melt
--- Este email foi escaneado pelo Avast antivírus. http://www.avast.com

df <- reshape2::dcast(da.melt, trat+tempo~Esp, value.var = 'N') df <- dplyr::arrange(df, tempo) all(df==da) 2015-03-21 20:18 GMT-03:00 ASANTOS <alexandresantosbr@yahoo.com.br>:
Boa noite Pessoal,
No meu CRM abaixo eu usei a função melt para empilhar, tem alguma outra função se eu desejo agora desempilhar o objeto criado e voltar o objeto a forma original, a função acast e dcast não funcionaram,
Obrigado,
#Dados artificiais ----------------------------------- da <- expand.grid(trat=gl(4,1), tempo=1:10) X <- model.matrix(~trat+tempo, da); ncol(X) da$Esp1<-rpois(da[,1],5) da$Esp2<-rpois(da[,1],10) da$Esp3<-rpois(da[,1],15) head(da) #Empilhar da.melt = melt(da, id = c("trat", "tempo"), variable.name="Esp",value.name ="N") head(da.melt)
#Mas e agora para à partir do objeto da.melt como eu volto para o objeto da?
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ======================================================================
On 25/02/2015 06:53, ASANTOS wrote:
Obrigado Salah
Era exatamente isto que eu queria!!
On 24/02/2015 21:50, izi wrote:
Olá Alexandre
Basta usar a função melt do pacote reshape2
library(reshape2)
da.melt = melt(da, id = c("trat", "tempo"), variable.name="Esp", value.name="N") da.melt
--- Este email foi escaneado pelo Avast antivírus. http://www.avast.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.
-- Luís Gustavo Silva e Silva

Obrigado Luís, Funcionou perfeitamente, após a instalação dos pacotes lazyeval e dplyr, solução: require(reshape2) require(dplyr) #Dados artificiais ----------------------------------- da <- expand.grid(trat=gl(4,1), tempo=1:10) X <- model.matrix(~trat+tempo, da); ncol(X) da$Esp1<-rpois(da[,1],5) da$Esp2<-rpois(da[,1],10) da$Esp3<-rpois(da[,1],15) head(da) #Empilhar da.melt = melt(da, id = c("trat", "tempo"), variable.name="Esp",value.name="N") head(da.melt) df <- reshape2::dcast(da.melt, trat+tempo~Esp, value.var = 'N') df <- dplyr::arrange(df, tempo) all(df==da) head(df) -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ====================================================================== On 21/03/2015 19:34, Luis G. S. e Silva wrote:
df <- reshape2::dcast(da.melt, trat+tempo~Esp, value.var = 'N') df <- dplyr::arrange(df, tempo) all(df==da)
--- Este email foi escaneado pelo Avast antivírus. http://www.avast.com
participantes (3)
-
ASANTOS
-
izi
-
Luis G. S. e Silva