[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