Re: [R-br] Digest R-br, volume 95, assunto 23

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Digest R-br, volume 95, assunto 23

R-br mailing list

Obrigado ao Daniel, ao Luciano e ao Jônatan,

Cada uma das soluções apresentadas, contém, a sua forma, lições muito interessantes.

A solução do Daniel, embora um pouco mais exaustiva, mostra como desmontar uma estrutura de dados em listas e depois fazer a engenharia reversa numa nova estrutura bidimensional na orientação desejada.

Já as soluções do Luciano e também a do Jônatan; mais elegantes e econômicas que essas, só com mágica; e mágica não me interessa.

Muito obrigado a todos,

PM

Em sex, 30 de nov de 2018 às 12:00, <[hidden email]> escreveu:
Enviar submissões para a lista de discussão R-br para
        [hidden email]

Para se cadastrar ou descadastrar via WWW, visite o endereço
        https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
ou, via email, envie uma mensagem com a palavra 'help' no assunto ou
corpo da mensagem para
        [hidden email]

Você poderá entrar em contato com a pessoa que gerencia a lista pelo
endereço
        [hidden email]

Quando responder, por favor edite sua linha Assunto assim ela será
mais específica que "Re: Contents of R-br digest..."


Tópicos de Hoje:

   1. Re: Modificação da orientação de estrutura de dados
      (Leonardo Mancini)
   2. Re: Modificação da orientação de estrutura de dados
      (Daniel Guimarães Tiezzi)
   3. Re: Modificação da orientação de estrutura de dados (Jônatan)


----------------------------------------------------------------------

Message: 1
Date: Thu, 29 Nov 2018 12:04:32 -0200
From: Leonardo Mancini <[hidden email]>
To: [hidden email]
Subject: Re: [R-br] Modificação da orientação de estrutura de
        dados
Message-ID:
        <CABAOmR02Yd4XgrYj92r47vpURiiivMDcYNo=sF=[hidden email]>
Content-Type: text/plain; charset="utf-8"

Paulo,

Certamente há uma maneira mais elegante de fazer isso, mas talvez esse
código te dê alguma pista:

df %>%
  spread(CAUSA, CAUSA) %>%
  unite(CAUSAS, A, B, C, D, E, F, G, H, I, sep = ",", remove = T) %>%
  mutate(CAUSAS = str_remove_all(CAUSAS, ",NA")) %>%
  mutate(CAUSAS = str_remove_all(CAUSAS, "NA,"))

Abs

Em qui, 29 de nov de 2018 às 10:30, Paulo Eduardo de Mesquita por (R-br) <
[hidden email]> escreveu:

> Prezado(a)s Colegas
>
> Peço ajuda para um problema simples para o qual não encontro solução.
>
> O código abaixo gera uma estrutura de dados de trabalho:
>
> [image: demo1.png]
>
> Eu quero muda-la para esse formato:
>
> [image: demo2.png]
>
>
> ID <- c(1, 1, 1, 1, 2, 2, 3, 3, 3)
> NOME <- c("xpto", "xpto", "xpto", "xpto", "tpzo", "tpzo", "capr", "capr",
> "capr")
> IDADE <- c(1, 1, 1, 1, 57, 57, 81, 81, 81)
> SEXO <- c("M", "M", "M", "M", "M", "M", "F", "F", "F")
> CAUSA <- c("A", "B", "C", "D", "E", "F","G","H","I")
>
> df <- data.frame(ID, NOME, IDADE, SEXO, CAUSA)
>
> df
>
> Procurei soluções com as com as funções do pacote reshape2 (unmelt e
> dcast) e group_by do dplyr, mas não tive sucesso.
>
> Fico grato por alguma dica.
>
> Muito obrigado pela atenção.
> --
> Paulo Eduardo de Mesquita
> Disciplina de Infectologia - Faculdade de Medicina  Universidade do Oeste
> Paulista Presidente Prudente - São Paulo - Brasil
> telefone: 5518 97718261
> _______________________________________________
> 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.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/7bd3a241/attachment-0001.html>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: demo1.png
Tipo: image/png
Tamanho: 3960 bytes
Descrição: não disponível
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/7bd3a241/attachment-0002.png>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: demo2.png
Tipo: image/png
Tamanho: 2925 bytes
Descrição: não disponível
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/7bd3a241/attachment-0003.png>

------------------------------

Message: 2
Date: Thu, 29 Nov 2018 12:26:45 -0200
From: Daniel Guimarães Tiezzi <[hidden email]>
To: "a lista Brasileira oficial de discussão do programa R."
        <[hidden email]>
Cc: Paulo Eduardo de Mesquita <[hidden email]>
Subject: Re: [R-br] Modificação da orientação de estrutura de
        dados
Message-ID: <[hidden email]>
Content-Type: text/plain; charset="utf-8"

Pode ser que não seja o mais rápido, mas resolve

ID <- c(1, 1, 1, 1, 2, 2, 3, 3, 3)
NOME <- c("xpto", "xpto", "xpto", "xpto", "tpzo", "tpzo", "capr", "capr", "capr")
IDADE <- c(1, 1, 1, 1, 57, 57, 81, 81, 81)
SEXO <- c("M", "M", "M", "M", "M", "M", "F", "F", "F")
CAUSA <- c("A", "B", "C", "D", "E", "F","G","H","I")

df <- data.frame(ID, NOME, IDADE, SEXO, CAUSA)

df

names <- unique(df$NOME)
id_l = list()
nome_l = list()
idade_l = list()
sexo_l = list()
causa_l = list()

for (i in 1:length(names)) {
  name = names[i]
  block = as.data.frame(df[df$NOME == name, ])
  id = block$ID[1]
  nome = block$NOME[1]
  idade = block$IDADE[1]
  sexo = block$SEXO[1]
  causa = vector()
  for (j in 1:nrow(block)) {
    causa = paste0(causa,block$CAUSA[j], sep = ',')
  }
  print(causa)
  id_l[[paste0(i)]] <- id
  nome_l[[paste0(i)]] <- nome
  idade_l[[paste0(i)]] <- idade
  sexo_l[[paste0(i)]] <- sexo
  causa_l[[paste0(i)]] <- causa
}

unlist(causa_l)

dfNew <- data.frame(ID = unlist(id_l), NOME= unlist(nome_l), IDADE= unlist(idade_l), SEXO= unlist(sexo_l), CAUSA= unlist(causa_l))
print(dfNew)

Abraço

daniel

Daniel Tiezzi, MD, PhD
Professor Associado
Departamento de Ginecologia e Obstetrícia
Setor de Mastologia e Oncologia Ginecológica
Faculdade de Medicina de Ribeirão Preto - USP
Tel.: 16 3602-2488
e-mail: [hidden email]

> On Nov 29, 2018, at 10:30 AM, Paulo Eduardo de Mesquita por (R-br) <[hidden email]> wrote:
>
> ID <- c(1, 1, 1, 1, 2, 2, 3, 3, 3)
> NOME <- c("xpto", "xpto", "xpto", "xpto", "tpzo", "tpzo", "capr", "capr", "capr")
> IDADE <- c(1, 1, 1, 1, 57, 57, 81, 81, 81)
> SEXO <- c("M", "M", "M", "M", "M", "M", "F", "F", "F")
> CAUSA <- c("A", "B", "C", "D", "E", "F","G","H","I")
>
> df <- data.frame(ID, NOME, IDADE, SEXO, CAUSA)
>
> df

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/778f1d5b/attachment-0001.html>

------------------------------

Message: 3
Date: Thu, 29 Nov 2018 14:08:54 -0200
From: Jônatan <[hidden email]>
To: a lista Brasileira oficial de discussão do programa R.
        <[hidden email]>
Subject: Re: [R-br] Modificação da orientação de estrutura de
        dados
Message-ID:
        <CAEiHnvPm3sJcOZSQE1HnNnSrHY=[hidden email]>
Content-Type: text/plain; charset="utf-8"

Alternativa também com dplyr.

library(dplyr)
df %>%
group_by_at(vars(-CAUSA)) %>%
summarise(CAUSA = paste(CAUSA, collapse = ", "))


On Thu, Nov 29, 2018 at 12:04 PM Leonardo Mancini por (R-br) <
[hidden email]> wrote:

> Paulo,
>
> Certamente há uma maneira mais elegante de fazer isso, mas talvez esse
> código te dê alguma pista:
>
> df %>%
>   spread(CAUSA, CAUSA) %>%
>   unite(CAUSAS, A, B, C, D, E, F, G, H, I, sep = ",", remove = T) %>%
>   mutate(CAUSAS = str_remove_all(CAUSAS, ",NA")) %>%
>   mutate(CAUSAS = str_remove_all(CAUSAS, "NA,"))
>
> Abs
>
> Em qui, 29 de nov de 2018 às 10:30, Paulo Eduardo de Mesquita por (R-br) <
> [hidden email]> escreveu:
>
>> Prezado(a)s Colegas
>>
>> Peço ajuda para um problema simples para o qual não encontro solução.
>>
>> O código abaixo gera uma estrutura de dados de trabalho:
>>
>> [image: demo1.png]
>>
>> Eu quero muda-la para esse formato:
>>
>> [image: demo2.png]
>>
>>
>> ID <- c(1, 1, 1, 1, 2, 2, 3, 3, 3)
>> NOME <- c("xpto", "xpto", "xpto", "xpto", "tpzo", "tpzo", "capr", "capr",
>> "capr")
>> IDADE <- c(1, 1, 1, 1, 57, 57, 81, 81, 81)
>> SEXO <- c("M", "M", "M", "M", "M", "M", "F", "F", "F")
>> CAUSA <- c("A", "B", "C", "D", "E", "F","G","H","I")
>>
>> df <- data.frame(ID, NOME, IDADE, SEXO, CAUSA)
>>
>> df
>>
>> Procurei soluções com as com as funções do pacote reshape2 (unmelt e
>> dcast) e group_by do dplyr, mas não tive sucesso.
>>
>> Fico grato por alguma dica.
>>
>> Muito obrigado pela atenção.
>> --
>> Paulo Eduardo de Mesquita
>> Disciplina de Infectologia - Faculdade de Medicina  Universidade do Oeste
>> Paulista Presidente Prudente - São Paulo - Brasil
>> telefone: 5518 97718261
>> _______________________________________________
>> 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.



--
###############################################################
##  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
###############################################################
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/c0417ec9/attachment-0001.html>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: demo1.png
Tipo: image/png
Tamanho: 3960 bytes
Descrição: não disponível
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/c0417ec9/attachment-0002.png>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: demo2.png
Tipo: image/png
Tamanho: 2925 bytes
Descrição: não disponível
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/c0417ec9/attachment-0003.png>

------------------------------

Subject: Legenda do Digest

_______________________________________________
R-br mailing list
[hidden email]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br


------------------------------

Fim da Digest R-br, volume 95, assunto 23
*****************************************


--
Paulo Eduardo de Mesquita
Disciplina de Infectologia - Faculdade de Medicina  Universidade do Oeste Paulista Presidente Prudente - São Paulo - Brasil
telefone: 5518 97718261

_______________________________________________
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.