
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.