Dados em uma tabela

Boa Noite, Tenho o seguinte banco de dados em txt( em anexo): 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 Gostaria que ficasse assim: Nome A B C D E G F JOSÉ 2 0 0 6 0 1 13 MARIA 3 0 0 1 0 1 6 PEDRO 0 0 0 0 0 0 3 Como fazer isso? Att, Gomes

solucao "rustica"...suponha que seu arquivo e' "dados.txt" a <- readLines("dados.txt") id.a <- which(substr(a,1,2)=='A.') nch <- nchar(a) tab <- sapply(0:6, function(j) as.integer(substring(a[id.a+j], nch[id.a+j]))) dimnames(tab) <- list(a[id.a-1], LETTERS[1:7]) tab aT+, Elias. On 27/08/14 05:26, jose gomes de souza filho Gomes wrote:
Boa Noite,
Tenho o seguinte banco de dados em txt( em anexo):
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
Gostaria que ficasse assim: Nome A B C D E G F JOSÉ 2 0 0 6 0 1 13 MARIA 3 0 0 1 0 1 6 PEDRO 0 0 0 0 0 0 3
Como fazer isso?
Att, Gomes
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br 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.

Eu rodei este código, deu certo quanto ao formato pedido, mas não colocou o número 13, apareceu 3 no seu lugar. Qual o motivo? solucao "rustica"...suponha que seu arquivo e' "dados.txt" a <- readLines("dados.txt") id.a <- which(substr(a,1,2)=='A.') nch <- nchar(a) tab <- sapply(0:6, function(j) as.integer(substring(a[id.a+j], nch[id.a+j]))) dimnames(tab) <- list(a[id.a-1], LETTERS[1:7]) tab aT+, Elias. On 27/08/14 05:26, jose gomes de souza filho Gomes wrote: Boa Noite, Tenho o seguinte banco de dados em txt( em anexo): 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 Gostaria que ficasse assim: Nome A B C D E G F JOSÉ 2 0 0 6 0 1 13 MARIA 3 0 0 1 0 1 6 PEDRO 0 0 0 0 0 0 3 Como fazer isso? Att, Gomes _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br 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 R-br@listas.c3sl.ufpr.br 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.

Oi Mauro, O problema e' que o codigo contempla apenas um digito... corrigindo contemplar tres digitos. Saliento que o co'digo e' rustico, talvez nao funcione para outras situacoes... a <- readLines("dados.txt") id.a <- which(substr(a,1,2)=='A.') nch <- nchar(a) tab <- sapply(0:6, function(j) as.integer(gsub('.', '', substring(a[id.a+j], nch[id.a+j]-2), fix=T))) dimnames(tab) <- list(a[id.a-1], LETTERS[1:7]) tab aT+, Elias. On 27/08/14 14:24, Mauro Sznelwar wrote:
Eu rodei este código, deu certo quanto ao formato pedido, mas não colocou o número 13, apareceu 3 no seu lugar. Qual o motivo? solucao "rustica"...suponha que seu arquivo e' "dados.txt"
a <- readLines("dados.txt") id.a <- which(substr(a,1,2)=='A.') nch <- nchar(a) tab <- sapply(0:6, function(j) as.integer(substring(a[id.a+j], nch[id.a+j]))) dimnames(tab) <- list(a[id.a-1], LETTERS[1:7]) tab
aT+, Elias.
On 27/08/14 05:26, jose gomes de souza filho Gomes wrote:
Boa Noite,
Tenho o seguinte banco de dados em txt( em anexo):
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
Gostaria que ficasse assim: Nome A B C D E G F JOSÉ 2 0 0 6 0 1 13 MARIA 3 0 0 1 0 1 6 PEDRO 0 0 0 0 0 0 3
Como fazer isso?
Att, Gomes
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br 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 R-br@listas.c3sl.ufpr.br 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 R-br@listas.c3sl.ufpr.br 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.

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.
participantes (4)
-
Elias T. Krainski
-
jose gomes de souza filho Gomes
-
Mauro Sznelwar
-
walmes .