[R-br] sobre conjuntos

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[R-br] sobre conjuntos

R-br mailing list
Car@s

Gostaria de saber se há alguma função no R, em algum pacote, que retorne as interseções e  valores únicos de diversos conjuntos ou grupos de subconjuntos. Por exemplo para:
SP1 <- c("a","b","c","d","g","h","i")
SP2 <- c("a","b","c","d","e","f","j")
SP3 <- c("a","b","g","h","e","f","k")

teríamos a saída:
SP1: i
SP2: j
SP3: k
SP1-SP2: c,d
SP1-SP3: g,h
SP2-SP3: e,f
SP1-SP2-SP3: a,b

Encontrei funções como intersect, setdiff e Reduce, Nem mesmo os valores exclusivos de cada conjunto eu consegui obter.

Agradeço qualquer indicação.

Obrigado,

--
Antônio Olinto Ávila da Silva
Instituto de Pesca
São Paulo, Brasil

_______________________________________________
R-br mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] sobre conjuntos

R-br mailing list
Olá Antônio,

Veja se ajuda:


library(dplyr)

SP1 <- c("a","b","c","d","g","h","i")
SP2 <- c("a","b","c","d","e","f","j")
SP3 <- c("a","b","g","h","e","f","k")
SP1 <- as_tibble(SP1)
SP2 <- as_tibble(SP2)
SP3 <- as_tibble(SP3)

#Para SP1
setdiff(setdiff(SP1,SP2),SP3)

#Para SP2
setdiff(setdiff(SP2,SP1),SP3)


#Para SP3
setdiff(setdiff(SP3,SP1),SP2)


O resto vc pode fazer com inter_join()

inner_join(SP1,SP2)
inner_join(SP1,SP3)
inner_join(inner_join(SP1,SP2),SP3)


Abraços,
Jasmine


> Em 31 de ago de 2018, à(s) 15:01, Antonio Silva via R-br <[hidden email]> escreveu:
>
> Car@s
>
> Gostaria de saber se há alguma função no R, em algum pacote, que retorne as interseções e  valores únicos de diversos conjuntos ou grupos de subconjuntos. Por exemplo para:
> SP1 <- c("a","b","c","d","g","h","i")
> SP2 <- c("a","b","c","d","e","f","j")
> SP3 <- c("a","b","g","h","e","f","k")
>
> teríamos a saída:
> SP1: i
> SP2: j
> SP3: k
> SP1-SP2: c,d
> SP1-SP3: g,h
> SP2-SP3: e,f
> SP1-SP2-SP3: a,b
>
> Encontrei funções como intersect, setdiff e Reduce, Nem mesmo os valores exclusivos de cada conjunto eu consegui obter.
>
> Agradeço qualquer indicação.
>
> Obrigado,
>
> --
> Antônio Olinto Ávila da Silva
> Instituto de Pesca
> São Paulo, Brasil
> _______________________________________________
> R-br mailing list
> [hidden email]
> 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
[hidden email]
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 fornea cdigo mnimo reproduzvel.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] sobre conjuntos

R-br mailing list
Obrigado Jasmine, ajudou bastante.

Meu desafio agora é obter o que é exclusivo para uma combinação de dois conjuntos. Por exemplo:

> inner_join(SP1,SP2)
Joining, by = "value"
# A tibble: 4 x 1
  value
  <chr>
1 a   
2 b   
3 c   
4 d

No entanto eu queria como resposta apenas o "c" e o "d" (exclusivos de SP1 e SP2) pois o "a" e o "b" também está em SP3.

Mais uma vez obrigado pela atenção.

A.O.

Em sex, 31 de ago de 2018 às 15:37, Jasmine Moreira <[hidden email]> escreveu:
Olá Antônio,

Veja se ajuda:


library(dplyr)

SP1 <- c("a","b","c","d","g","h","i")
SP2 <- c("a","b","c","d","e","f","j")
SP3 <- c("a","b","g","h","e","f","k")
SP1 <- as_tibble(SP1)
SP2 <- as_tibble(SP2)
SP3 <- as_tibble(SP3)

#Para SP1
setdiff(setdiff(SP1,SP2),SP3)

#Para SP2
setdiff(setdiff(SP2,SP1),SP3)


#Para SP3
setdiff(setdiff(SP3,SP1),SP2)


O resto vc pode fazer com inter_join()

inner_join(SP1,SP2)
inner_join(SP1,SP3)
inner_join(inner_join(SP1,SP2),SP3)


Abraços,
Jasmine


> Em 31 de ago de 2018, à(s) 15:01, Antonio Silva via R-br <[hidden email]> escreveu:
>
> Car@s
>
> Gostaria de saber se há alguma função no R, em algum pacote, que retorne as interseções e  valores únicos de diversos conjuntos ou grupos de subconjuntos. Por exemplo para:
> SP1 <- c("a","b","c","d","g","h","i")
> SP2 <- c("a","b","c","d","e","f","j")
> SP3 <- c("a","b","g","h","e","f","k")
>
> teríamos a saída:
> SP1: i
> SP2: j
> SP3: k
> SP1-SP2: c,d
> SP1-SP3: g,h
> SP2-SP3: e,f
> SP1-SP2-SP3: a,b
>
> Encontrei funções como intersect, setdiff e Reduce, Nem mesmo os valores exclusivos de cada conjunto eu consegui obter.
>
> Agradeço qualquer indicação.
>
> Obrigado,
>
> --
> Antônio Olinto Ávila da Silva
> Instituto de Pesca
> São Paulo, Brasil
> _______________________________________________
> R-br mailing list
> [hidden email]
> 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
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] sobre conjuntos

R-br mailing list

segue sugestão


SP1 = c("a","b","c","d","g","h","i")
SP2 = c("a","b","c","d","e","f","j")
SP3 = c("a","b","g","h","e","f","k")

A = setdiff(SP1, SP2)
B = setdiff(SP2, SP3)
C = setdiff(SP3, SP1)

setdiff(A, SP3)
setdiff(B, SP1)
setdiff(C, SP2)

intersect(SP1, B)
intersect(SP2, C)
intersect(SP3, A)

intersect(intersect(SP1, SP2), SP3)


Em 31/08/2018 16:49, Antonio Silva via R-br escreveu:
Obrigado Jasmine, ajudou bastante.

Meu desafio agora é obter o que é exclusivo para uma combinação de dois conjuntos. Por exemplo:

> inner_join(SP1,SP2)
Joining, by = "value"
# A tibble: 4 x 1
  value
  <chr>
1 a   
2 b   
3 c   
4 d

No entanto eu queria como resposta apenas o "c" e o "d" (exclusivos de SP1 e SP2) pois o "a" e o "b" também está em SP3.

Mais uma vez obrigado pela atenção.

A.O.

Em sex, 31 de ago de 2018 às 15:37, Jasmine Moreira <[hidden email]> escreveu:
Olá Antônio,

Veja se ajuda:


library(dplyr)

SP1 <- c("a","b","c","d","g","h","i")
SP2 <- c("a","b","c","d","e","f","j")
SP3 <- c("a","b","g","h","e","f","k")
SP1 <- as_tibble(SP1)
SP2 <- as_tibble(SP2)
SP3 <- as_tibble(SP3)

#Para SP1
setdiff(setdiff(SP1,SP2),SP3)

#Para SP2
setdiff(setdiff(SP2,SP1),SP3)


#Para SP3
setdiff(setdiff(SP3,SP1),SP2)


O resto vc pode fazer com inter_join()

inner_join(SP1,SP2)
inner_join(SP1,SP3)
inner_join(inner_join(SP1,SP2),SP3)


Abraços,
Jasmine


> Em 31 de ago de 2018, à(s) 15:01, Antonio Silva via R-br <[hidden email]> escreveu:
>
> Car@s
>
> Gostaria de saber se há alguma função no R, em algum pacote, que retorne as interseções e  valores únicos de diversos conjuntos ou grupos de subconjuntos. Por exemplo para:
> SP1 <- c("a","b","c","d","g","h","i")
> SP2 <- c("a","b","c","d","e","f","j")
> SP3 <- c("a","b","g","h","e","f","k")
>
> teríamos a saída:
> SP1: i
> SP2: j
> SP3: k
> SP1-SP2: c,d
> SP1-SP3: g,h
> SP2-SP3: e,f
> SP1-SP2-SP3: a,b
>
> Encontrei funções como intersect, setdiff e Reduce, Nem mesmo os valores exclusivos de cada conjunto eu consegui obter.
>
> Agradeço qualquer indicação.
>
> Obrigado,
>
> --
> Antônio Olinto Ávila da Silva
> Instituto de Pesca
> São Paulo, Brasil
> _______________________________________________
> R-br mailing list
> [hidden email]
> 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
[hidden email]
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
[hidden email]
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.