Extração de data e hora de uma string de extrato bancario

Saudações, Tenho um arquivo com uma coluna que é histórico de movimentação financeira. Os elementos dessa coluna são strings como o exemplo abaixo historico <- c("compra com cartão - 01/04 22:11 lanchonete", "compra com cartão - 02/04 12:51 restaurante") Como posso fazer para criar um vetor contendo só a data, padrão "dd/mm", e outro com a hora, padrão "hh:mm", que esteja no formato de data para que eu possa plotar os valores movimentados em função da data? Grato. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Walmes, Acho que isso pode resolver, historico <- c("compra com cartão - 01/04 22:11 lanchonete", "compra com cartão - 02/04 12:51 restaurante") obj <- unlist(strsplit(historico,' ')) dia <- obj[grep('/',obj)] hora <-obj[grep(':',obj)] data <- as.Date(paste(dia,hora),'%d/%m %H:%M') class(data) Att
Saudações,
Tenho um arquivo com uma coluna que é histórico de movimentação financeira. Os elementos dessa coluna são strings como o exemplo abaixo
historico <- c("compra com cartão - 01/04 22:11 lanchonete", "compra com cartão - 02/04 12:51 restaurante")
Como posso fazer para criar um vetor contendo só a data, padrão "dd/mm", e outro com a hora, padrão "hh:mm", que esteja no formato de data para que eu possa plotar os valores movimentados em função da data?
Grato. Walmes.
========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ========================================================================== _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

se vc puder garantir que e' sempre: data - hora (ao inves de hora aparecer primeiro) parsed1 <- gsub(".*([0-9]{2}\\/[0-9]{2}).*([0-9]{2}\\:[0-9]{2}).*", "\\1-\\2", historico) do.call(rbind, strsplit(parsed1, "-")) b 2011/5/14 <eder@leg.ufpr.br>:
Walmes, Acho que isso pode resolver, historico <- c("compra com cartão - 01/04 22:11 lanchonete", "compra com cartão - 02/04 12:51 restaurante")
obj <- unlist(strsplit(historico,' '))
dia <- obj[grep('/',obj)] hora <-obj[grep(':',obj)]
data <- as.Date(paste(dia,hora),'%d/%m %H:%M') class(data) Att
Saudações,
Tenho um arquivo com uma coluna que é histórico de movimentação financeira. Os elementos dessa coluna são strings como o exemplo abaixo
historico <- c("compra com cartão - 01/04 22:11 lanchonete", "compra com cartão - 02/04 12:51 restaurante")
Como posso fazer para criar um vetor contendo só a data, padrão "dd/mm", e outro com a hora, padrão "hh:mm", que esteja no formato de data para que eu possa plotar os valores movimentados em função da data?
Grato. Walmes.
========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ========================================================================== _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
-- Successful people ask better questions, and as a result, they get better answers. (Tony Robbins)

Ótimo Éder, Deu certo. Agora vou complicar um pouco. Imagine que eu queira repartir a string assim compra com cartão | 01/04 | 22:11 | lanchonete, compra com cartão | 01/04 | 22:11 | lanchonete do tião, compra com cartão | 01/04 | 22:11 | S Z C Restaurante, em que | indica o ponto de corte. Eu posso repartir no traço "-" e pegar a primeira parte "compra com cartão", posso usar suas soluções para pegar a data e a hora, mas como eu faço para pegar o último termo? Os elementos do último termo possuem espaços, letras em caixa alta. A única forma de cortar, pelo que percebi, seria especificando "corte logo apos dois dígitos a direita de :". Como compor uma expressão regular assim e obter os elementos da última partição? Grato mais uma vez. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Walmes, Tente assim: gsub("(.*)\\s\\-\\s(\\d+/\\d+)\\s(\\d+:\\d+)\\s(.*)", "\\1 | \\2 | \\3 | \\4", historico) 2011/5/14 Walmes Zeviani <walmeszeviani@gmail.com>:
Ótimo Éder,
Deu certo. Agora vou complicar um pouco. Imagine que eu queira repartir a string assim
compra com cartão | 01/04 | 22:11 | lanchonete, compra com cartão | 01/04 | 22:11 | lanchonete do tião, compra com cartão | 01/04 | 22:11 | S Z C Restaurante,
em que | indica o ponto de corte. Eu posso repartir no traço "-" e pegar a primeira parte "compra com cartão", posso usar suas soluções para pegar a data e a hora, mas como eu faço para pegar o último termo? Os elementos do último termo possuem espaços, letras em caixa alta. A única forma de cortar, pelo que percebi, seria especificando "corte logo apos dois dígitos a direita de :". Como compor uma expressão regular assim e obter os elementos da última partição?
Grato mais uma vez. Walmes.
========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
-- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O

Henrique, Benilton e Éder, Obrigado pelas respostas. Todas excelentes. Aos poucos vou aprendendo expressões regulares. Logo vou estar no grupo de apoio de RE também, rs. Bom domingo à todos. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
participantes (4)
-
Benilton Carvalho
-
eder@leg.ufpr.br
-
Henrique Dallazuanna
-
Walmes Zeviani