Fazer tabelas coincidirem

8 views
Skip to first unread message

Ricardo Dobrovolski

unread,
Sep 23, 2014, 12:41:26 PM9/23/14
to r-eco...@googlegroups.com, Fabricio Villalobos, Bruno Vilela, Luciano F. Sgarbi
Oi Pessoal,

Desculpa a burrice, mas estou apanhando do R sem piedade.

Tenho três tabela e nas três uma das colunas é o nome da espécie (binomial colado por underline).

Como são bases de dados diferentes, os nomes e a ordem das espécies não coincidem, então quero fazer uma tabela única, com as espécies comuns, e com todas as informações combinadas.

Segue em anexo uma amostra das três tabelas.

Abraço,

RD.
agro_teste.txt
extr_teste.txt
iucn_teste.txt

Augusto Ribas

unread,
Sep 23, 2014, 2:52:02 PM9/23/14
to r-eco...@googlegroups.com
Use a função Merge, e vai juntando de duas em duas.
O comando Merge vai te pedir dois dataframes e por qual coluna juntar eles (Fazer o Join)

Existe um quarto argumento, que ele vai perguntar se você so quer juntar casos completos, ou se tiver um nome de especie numa tabela e não na outra, se você quer que essa linha apareca na tabela final preenchida com NA ou não.

Olha o exemplo:

veja que são duas tabelas, x e y, e a gente pode querer juntar pela coluna k1 ou k2, ou os 2, veja o que o incomparables faz também.


> x <- data.frame(k1 = c(NA,NA,3,4,5), k2 = c(1,NA,NA,4,5), data = 1:5)
> y <- data.frame(k1 = c(NA,2,NA,4,5), k2 = c(NA,NA,3,4,5), data = 1:5)
> merge(x, y, by = c("k1","k2")) # NA's match
  k1 k2 data.x data.y
1  4  4      4      4
2  5  5      5      5
3 NA NA      2      1
> merge(x, y, by = "k1") # NA's match, so 6 rows
  k1 k2.x data.x k2.y data.y
1  4    4      4    4      4
2  5    5      5    5      5
3 NA    1      1   NA      1
4 NA    1      1    3      3
5 NA   NA      2   NA      1
6 NA   NA      2    3      3
> merge(x, y, by = "k2", incomparables = NA) # 2 rows
  k2 k1.x data.x k1.y data.y
1  4    4      4    4      4
2  5    5      5    5      5



--
Envie um código mínimo reproduzível.
Envie ou responda perguntas para o e-mail (r-eco...@googlegroups.com)
---
Você recebeu essa mensagem porque está inscrito no grupo "R-Ecology" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para r-ecologia+...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/r-ecologia.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Grato
Augusto C. A. Ribas
 

Ricardo Dobrovolski

unread,
Sep 23, 2014, 4:32:26 PM9/23/14
to r-eco...@googlegroups.com
Oi Augusto,

Muito obrigado. Vou conferir tua sugestão e te dou um retorno.

Abraço,

RD.
Reply all
Reply to author
Forward
0 new messages