obter data.frames com mesmas dimensões

Boa tarde, Eu tenho dois data.frames com número de linhas diferentes (nrow(rep1C) = 73, nrow(rep2C) = 45), e colunas iguais (19). Eu quero que ambos data.frames fiquem com a mesma dimensão. Para isso, rep2C deve ser aumentado com "NA". Porém, quero manter os mesmos índices "area", "season", "month" para ambos data.frames. Alguém tem alguma idéia de que função usar? Segue CMR: #---------------------------------------------------------------------- ## Load data # file: *https://www.datafilehost.com/d/64a6a8d9 <https://www.datafilehost.com/d/64a6a8d9>* load('dataC.inia.rda') ## Building matrix for replicates # Sampling 1 rep1C <- dataC.inia[dataC.inia$replicate == 1,] table(rep1C$area, rep1C$season, rep1C$transect) dim(rep1C) # Sampling 2 rep2 <- dataC.inia[dataC$replicate == 2,] table(rep2$area, rep2$season, rep2$transect) dim(rep2) #---------------------------------------------------------------------- Obrigada pela ajuda! Heloise

Tentei baixar o arquivo, mas o que chegou foi um arquivo vazio (zero byte). Se o que você quer realmente é esticar um data.frame, você pode fazer algo assim: df <- data.frame(x = rnorm(10), y = rbinom(10, 1, 0.5)) df[11:20, ] <- NA df Só que... Estou curioso para saber que tipo de problema você pretende resolver com isso. Att, Leonardo Ferreira Fontenelle[1] Em Sáb 25 jun. 2016, às 12:20, Heloíse Pavanato via R-br escreveu:
Boa tarde,
Eu tenho dois data.frames com número de linhas diferentes (nrow(rep1C) = 73, nrow(rep2C) = 45), e colunas iguais (19). Eu quero que ambos data.frames fiquem com a mesma dimensão. Para isso, rep2C deve ser aumentado com "NA". Porém, quero manter os mesmos índices "area", "season", "month" para ambos data.frames.
Alguém tem alguma idéia de que função usar?
Segue CMR:
#--------------------------------------------------------------- #-------
## Load data # file: _https://www.datafilehost.com/d/64a6a8d9_ load('dataC.inia.rda')
## Building matrix for replicates # Sampling 1 rep1C <- dataC.inia[dataC.inia$replicate == 1,]
table(rep1C$area, rep1C$season, rep1C$transect) dim(rep1C)
# Sampling 2 rep2 <- dataC.inia[dataC$replicate == 2,] table(rep2$area, rep2$season, rep2$transect) dim(rep2)
#-------------------------------------------------------------- --------
Obrigada pela ajuda!
Heloise _________________________________________________ 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.
Links: 1. http://lattes.cnpq.br/9234772336296638

Oi Leonardo, Obrigada pela sua ajuda. Coloquei o arquivo rda no Dropbox. Veja se consegue abrir agora. https://www.dropbox.com/s/wg5zmqud4q62yng/dataC.inia.rda?dl=0 Eu tenho duas ocasiões amostrais que deveriam ser equivalentes. Porém, na primeira (rep1C) tenho mais meses amostrados. Gostaria de preencher a segunda ocasião (rep2C) com os meses faltantes para que fique igual ao primeiro data.frame. Estava tentando usar a função "rbind.fill" do pacote "plyr" mas sem sucesso. Segue CMR atualizado: #--------------------------------------------------------------------- ## Building matrix for replicates # Sampling 1 rep1C <- dataC.inia[dataC.inia$replicate == 1,] table(rep1C$area, rep1C$season, rep1C$transect) dim(rep1C) # Sampling 2 rep2C <- dataC.inia[dataC.inia$replicate == 2,] table(rep2C$area, rep2C$season, rep2C$transect) dim(rep2C) comb.rep <- rbind.fill(rep1C, rep2C) dim(comb.rep[comb.rep$replicate == '2',]) #--------------------------------------------------------------------- Obrigada, Heloise Em 25 de junho de 2016 16:32, Leonardo Fontenelle via R-br < r-br@listas.c3sl.ufpr.br> escreveu:
Tentei baixar o arquivo, mas o que chegou foi um arquivo vazio (zero byte).
Se o que você quer realmente é esticar um data.frame, você pode fazer algo assim:
df <- data.frame(x = rnorm(10), y = rbinom(10, 1, 0.5)) df[11:20, ] <- NA df
Só que... Estou curioso para saber que tipo de problema você pretende resolver com isso.
Att,
Leonardo Ferreira Fontenelle <http://lattes.cnpq.br/9234772336296638>
Em Sáb 25 jun. 2016, às 12:20, Heloíse Pavanato via R-br escreveu:
Boa tarde,
Eu tenho dois data.frames com número de linhas diferentes (nrow(rep1C) = 73, nrow(rep2C) = 45), e colunas iguais (19). Eu quero que ambos data.frames fiquem com a mesma dimensão. Para isso, rep2C deve ser aumentado com "NA". Porém, quero manter os mesmos índices "area", "season", "month" para ambos data.frames.
Alguém tem alguma idéia de que função usar?
Segue CMR:
#----------------------------------------------------------------------
## Load data # file: *https://www.datafilehost.com/d/64a6a8d9 <https://www.datafilehost.com/d/64a6a8d9>* load('dataC.inia.rda')
## Building matrix for replicates # Sampling 1 rep1C <- dataC.inia[dataC.inia$replicate == 1,]
table(rep1C$area, rep1C$season, rep1C$transect) dim(rep1C)
# Sampling 2 rep2 <- dataC.inia[dataC$replicate == 2,] table(rep2$area, rep2$season, rep2$transect) dim(rep2)
#----------------------------------------------------------------------
Obrigada pela ajuda!
Heloise *_______________________________________________* 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.
_______________________________________________ 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.

Heloíse, a função left_join() do pacote dplyr acho que serve para fazer o que você quer. Ela é um caso particular da merge(). Veja a diferença da full_join() para a left_join(), de repente a última sirva dependendo se você tem mais amostras. ## Load data print(load('dataC.inia.rda')) ## Building matrix for replicates # Sampling 1 rep1C <- dataC.inia[dataC.inia$replicate == 1,] str(rep1C) # Sampling 2 rep2C <- dataC.inia[dataC.inia$replicate == 2,] str(rep2C) all(names(rep1C) %in% names(rep2C)) # valores únicos das 4 primeiras vars lapply(rep1C[ ,1:4], function(x)unique(x)) lapply(rep2C[ ,1:4], function(x)unique(x)) # combinando dados library(dplyr) comb_repC <- left_join(rep1C[, 1:4], rep2C) # comb_repC2 <- full_join(rep1C[, 1:4], rep2C) comb_repC # verificação dim(rep1C) dim(rep2C) dim(comb_repC) # dim(comb_repC2) lapply(rep1C[ ,1:4], function(x) unique(x)) lapply(comb_repC[ ,1:4], function(x) unique(x)) 2016-06-25 16:50 GMT-03:00 Heloíse Pavanato <r-br@listas.c3sl.ufpr.br>:
Oi Leonardo,
Obrigada pela sua ajuda.
Coloquei o arquivo rda no Dropbox. Veja se consegue abrir agora.
https://www.dropbox.com/s/wg5zmqud4q62yng/dataC.inia.rda?dl=0
Eu tenho duas ocasiões amostrais que deveriam ser equivalentes. Porém, na primeira (rep1C) tenho mais meses amostrados. Gostaria de preencher a segunda ocasião (rep2C) com os meses faltantes para que fique igual ao primeiro data.frame.
Estava tentando usar a função "rbind.fill" do pacote "plyr" mas sem sucesso.
Segue CMR atualizado:
#--------------------------------------------------------------------- ## Building matrix for replicates # Sampling 1 rep1C <- dataC.inia[dataC.inia$replicate == 1,]
table(rep1C$area, rep1C$season, rep1C$transect) dim(rep1C)
# Sampling 2 rep2C <- dataC.inia[dataC.inia$replicate == 2,] table(rep2C$area, rep2C$season, rep2C$transect) dim(rep2C)
comb.rep <- rbind.fill(rep1C, rep2C) dim(comb.rep[comb.rep$replicate == '2',])
#---------------------------------------------------------------------
Obrigada,
Heloise
Em 25 de junho de 2016 16:32, Leonardo Fontenelle via R-br < r-br@listas.c3sl.ufpr.br> escreveu:
Tentei baixar o arquivo, mas o que chegou foi um arquivo vazio (zero byte).
Se o que você quer realmente é esticar um data.frame, você pode fazer algo assim:
df <- data.frame(x = rnorm(10), y = rbinom(10, 1, 0.5)) df[11:20, ] <- NA df
Só que... Estou curioso para saber que tipo de problema você pretende resolver com isso.
Att,
Leonardo Ferreira Fontenelle <http://lattes.cnpq.br/9234772336296638>
Em Sáb 25 jun. 2016, às 12:20, Heloíse Pavanato via R-br escreveu:
Boa tarde,
Eu tenho dois data.frames com número de linhas diferentes (nrow(rep1C) = 73, nrow(rep2C) = 45), e colunas iguais (19). Eu quero que ambos data.frames fiquem com a mesma dimensão. Para isso, rep2C deve ser aumentado com "NA". Porém, quero manter os mesmos índices "area", "season", "month" para ambos data.frames.
Alguém tem alguma idéia de que função usar?
Segue CMR:
#----------------------------------------------------------------------
## Load data # file: *https://www.datafilehost.com/d/64a6a8d9 <https://www.datafilehost.com/d/64a6a8d9>* load('dataC.inia.rda')
## Building matrix for replicates # Sampling 1 rep1C <- dataC.inia[dataC.inia$replicate == 1,]
table(rep1C$area, rep1C$season, rep1C$transect) dim(rep1C)
# Sampling 2 rep2 <- dataC.inia[dataC$replicate == 2,] table(rep2$area, rep2$season, rep2$transect) dim(rep2)
#----------------------------------------------------------------------
Obrigada pela ajuda!
Heloise *_______________________________________________* 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.
_______________________________________________ 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.
_______________________________________________ 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.
-- ############################################################### ## Jônatan Dupont Tatsch ## Professor do Departamento de Física ## Centro de Ciências Exatas e Naturais (CCNE) ## Universidade Federal de Santa Maria - UFSM ## Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil - 97105-900 ## Telefone: +55(55)33012083 ## www.ufsm.br/meteorologia ###############################################################

Oi Jônatan, Era exatamente este data.frame final que eu queria obter. Não vi diferença entre o uso da left_join e full_join, na verdade. Muito obrigada pela sua ajuda! Heloise. Em 25 de junho de 2016 17:43, Jônatan <jdtatsch@gmail.com> escreveu:
Heloíse, a função left_join() do pacote dplyr acho que serve para fazer o que você quer. Ela é um caso particular da merge(). Veja a diferença da full_join() para a left_join(), de repente a última sirva dependendo se você tem mais amostras. ## Load data print(load('dataC.inia.rda'))
## Building matrix for replicates # Sampling 1 rep1C <- dataC.inia[dataC.inia$replicate == 1,] str(rep1C) # Sampling 2 rep2C <- dataC.inia[dataC.inia$replicate == 2,] str(rep2C) all(names(rep1C) %in% names(rep2C)) # valores únicos das 4 primeiras vars lapply(rep1C[ ,1:4], function(x)unique(x)) lapply(rep2C[ ,1:4], function(x)unique(x)) # combinando dados library(dplyr) comb_repC <- left_join(rep1C[, 1:4], rep2C) # comb_repC2 <- full_join(rep1C[, 1:4], rep2C) comb_repC # verificação dim(rep1C) dim(rep2C) dim(comb_repC) # dim(comb_repC2) lapply(rep1C[ ,1:4], function(x) unique(x)) lapply(comb_repC[ ,1:4], function(x) unique(x))
2016-06-25 16:50 GMT-03:00 Heloíse Pavanato <r-br@listas.c3sl.ufpr.br>:
Oi Leonardo,
Obrigada pela sua ajuda.
Coloquei o arquivo rda no Dropbox. Veja se consegue abrir agora.
https://www.dropbox.com/s/wg5zmqud4q62yng/dataC.inia.rda?dl=0
Eu tenho duas ocasiões amostrais que deveriam ser equivalentes. Porém, na primeira (rep1C) tenho mais meses amostrados. Gostaria de preencher a segunda ocasião (rep2C) com os meses faltantes para que fique igual ao primeiro data.frame.
Estava tentando usar a função "rbind.fill" do pacote "plyr" mas sem sucesso.
Segue CMR atualizado:
#--------------------------------------------------------------------- ## Building matrix for replicates # Sampling 1 rep1C <- dataC.inia[dataC.inia$replicate == 1,]
table(rep1C$area, rep1C$season, rep1C$transect) dim(rep1C)
# Sampling 2 rep2C <- dataC.inia[dataC.inia$replicate == 2,] table(rep2C$area, rep2C$season, rep2C$transect) dim(rep2C)
comb.rep <- rbind.fill(rep1C, rep2C) dim(comb.rep[comb.rep$replicate == '2',])
#---------------------------------------------------------------------
Obrigada,
Heloise
Em 25 de junho de 2016 16:32, Leonardo Fontenelle via R-br < r-br@listas.c3sl.ufpr.br> escreveu:
Tentei baixar o arquivo, mas o que chegou foi um arquivo vazio (zero byte).
Se o que você quer realmente é esticar um data.frame, você pode fazer algo assim:
df <- data.frame(x = rnorm(10), y = rbinom(10, 1, 0.5)) df[11:20, ] <- NA df
Só que... Estou curioso para saber que tipo de problema você pretende resolver com isso.
Att,
Leonardo Ferreira Fontenelle <http://lattes.cnpq.br/9234772336296638>
Em Sáb 25 jun. 2016, às 12:20, Heloíse Pavanato via R-br escreveu:
Boa tarde,
Eu tenho dois data.frames com número de linhas diferentes (nrow(rep1C) = 73, nrow(rep2C) = 45), e colunas iguais (19). Eu quero que ambos data.frames fiquem com a mesma dimensão. Para isso, rep2C deve ser aumentado com "NA". Porém, quero manter os mesmos índices "area", "season", "month" para ambos data.frames.
Alguém tem alguma idéia de que função usar?
Segue CMR:
#----------------------------------------------------------------------
## Load data # file: *https://www.datafilehost.com/d/64a6a8d9 <https://www.datafilehost.com/d/64a6a8d9>* load('dataC.inia.rda')
## Building matrix for replicates # Sampling 1 rep1C <- dataC.inia[dataC.inia$replicate == 1,]
table(rep1C$area, rep1C$season, rep1C$transect) dim(rep1C)
# Sampling 2 rep2 <- dataC.inia[dataC$replicate == 2,] table(rep2$area, rep2$season, rep2$transect) dim(rep2)
#----------------------------------------------------------------------
Obrigada pela ajuda!
Heloise *_______________________________________________* 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.
_______________________________________________ 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.
_______________________________________________ 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.
-- ############################################################### ## Jônatan Dupont Tatsch ## Professor do Departamento de Física ## Centro de Ciências Exatas e Naturais (CCNE) ## Universidade Federal de Santa Maria - UFSM ## Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil - 97105-900 ## Telefone: +55(55)33012083 ## www.ufsm.br/meteorologia ###############################################################

Em Sáb 25 jun. 2016, às 16:50, Heloíse Pavanato escreveu:
Oi Leonardo,
Obrigada pela sua ajuda.
Coloquei o arquivo rda no Dropbox. Veja se consegue abrir agora.
https://www.dropbox.com/s/wg5zmqud4q62yng/dataC.inia.rda?dl=0
Obrigado, desta vez consegui baixar os dados.
Eu tenho duas ocasiões amostrais que deveriam ser equivalentes. Porém, na primeira (rep1C) tenho mais meses amostrados. Gostaria de preencher a segunda ocasião (rep2C) com os meses faltantes para que fique igual ao primeiro data.frame.
De fato, não é fácil inserir linhas dentro de um data.frame "empurrando" para baixo" as outras linhas. Deve haver algum modo elegante de fazer isso com data.table, mas eu não tenho prática com essa forma de usar o pacote / a classe. Uma forma seria você criar um data.frame para a segunda amostra utilizando como molde o data.frame da primeira amostra, e então povoar o segundo data.frame com os dados da segunda amostra. Naturalmente, isso só vai observar se todas as observações na segunda amostra tiverem uma correspondência em alguma observação na primeira amostra. Ainda não entendi qual é a forma de analisar os dados que a obriga a criar essas linhas com valores faltantes. Att, Leonardo Ferreira Fontenelle[1] Links: 1. http://lattes.cnpq.br/9234772336296638

Oi Leonardo, Daria se a ordem das linhas não importasse. Mas este não é meu caso. Eu justamente preciso da correspondência entre um data.frame e outro. Eu consegui fazer isso com a ajuda do Jônatan, que sugeriu a função "left_join." Estou usando N-mixture models e para estimar a abundância ao final eu preciso do data.frame completo. Obrigada pela ajuda! Heloise. Em 27 de junho de 2016 18:59, Leonardo Fontenelle < leonardof@leonardof.med.br> escreveu:
Em Sáb 25 jun. 2016, às 16:50, Heloíse Pavanato escreveu:
Oi Leonardo,
Obrigada pela sua ajuda.
Coloquei o arquivo rda no Dropbox. Veja se consegue abrir agora.
https://www.dropbox.com/s/wg5zmqud4q62yng/dataC.inia.rda?dl=0
Obrigado, desta vez consegui baixar os dados.
Eu tenho duas ocasiões amostrais que deveriam ser equivalentes. Porém, na primeira (rep1C) tenho mais meses amostrados. Gostaria de preencher a segunda ocasião (rep2C) com os meses faltantes para que fique igual ao primeiro data.frame.
De fato, não é fácil inserir linhas dentro de um data.frame "empurrando" para baixo" as outras linhas. Deve haver algum modo elegante de fazer isso com data.table, mas eu não tenho prática com essa forma de usar o pacote / a classe. Uma forma seria você criar um data.frame para a segunda amostra utilizando como molde o data.frame da primeira amostra, e então povoar o segundo data.frame com os dados da segunda amostra. Naturalmente, isso só vai observar se todas as observações na segunda amostra tiverem uma correspondência em alguma observação na primeira amostra.
Ainda não entendi qual é a forma de analisar os dados que a obriga a criar essas linhas com valores faltantes.
Att,
Leonardo Ferreira Fontenelle <http://lattes.cnpq.br/9234772336296638>
participantes (3)
-
Heloíse Pavanato
-
Jônatan
-
Leonardo Fontenelle