[R-br] Dados em uma tabela

walmes . walmeszeviani em gmail.com
Quarta Agosto 27 10:20:31 BRT 2014


Minha solução não é tão curta como a do Elías e requer funções de alguns
pacotes. De qualquer forma, pode ser útil no futuro.

##-----------------------------------------------------------------------------

x <- "JOSÉ
A................................. 2
B.....................................0
C...................................0
D.................................... 6
E.......................0
F............................. 1
G................................ 13
MARIA
A................................. 3
B.....................................0
C...................................0
D.................................... 1
E.......................0
F............................. 1
G................................ 6
PEDRO
A.................................0
B.....................................
C...................................0
D...................................0
E.......................0
F.............................0
G................................ 3"

da <- readLines(textConnection(x)); closeAllConnections()

## Em um CMR, fornceça o dput() dos teus dados para que facilite para o
## seu colaborador.

dput(da)

##-----------------------------------------------------------------------------

i <- grepl("\\.+", da)
da[!i] ## Nome de coluna.
da[i]  ## Registro.

r <- da[i]
rs <- strsplit(r, split="\\.+\\s?")
rs <- lapply(rs,
             function(x){
                 y <- as.data.frame(as.list(x), stringsAsFactors=FALSE)
                 names(y) <- paste0("V", 1:ncol(y))
                 return(y)
             })
rs

## rbind.fill() coloca NA onde for necessário.
s <- do.call(plyr::rbind.fill, rs)
s$V2 <- as.integer(s$V2)
str(s)

## Considerando que a regularidade de todos terem itens de A até G (7
## elementos), nessa ordem, um após o outro, pode-se fazer.

s$V3 <- rep(da[!i], each=7)
s

reshape::cast(data=s, V3~V1, value="V2")

​
​À disposição.
Walmes.​
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140827/b6bc0f04/attachment.html>


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