[R-br] Modificação da orientação de estrutura de dados

Daniel Guimarães Tiezzi dtiezzi em usp.br
Qui Nov 29 12:26:45 -02 2018


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: dtiezzi em fmrp.usp.br

> On Nov 29, 2018, at 10:30 AM, Paulo Eduardo de Mesquita por (R-br) <r-br em listas.c3sl.ufpr.br> 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.html>


Mais detalhes sobre a lista de discussão R-br