Duvidas procedimentos SAS x R
2 participantes
Página 1 de 1
Duvidas procedimentos SAS x R
Boa dia,
Trabalho com análise de banco de operadoras de saúde utilizando o SAS como ferramenta de trabalho.
Entretanto estou migrando para o R devido ao fato de ser gratuito e já consegui resolver boa parte do que necessito para a leitura dos dados.
Entretanto existe uma coluna que possuem codigos de eventos de 1 até 65 que representam diversos tipos de procedimentos médicos.
no SAS classifico da seguinte forma, criando a partir da variavel "EVENTO" uma nova variavel "EVENTOCD":
IF (EVENTO = 1) THEN EVENTOCD = 'CONSULTAS';
IF (EVENTO > 1 AND EVENTO <= 24) THEN EVENTOCD = 'EXAMES';
e dai por diante.
No R, eu consegui fazer isto da seguinte forma
arquivo2<- data.frame(arquivo2,arquivo2$EVENTO);
arquivo2$arquivo2.EVENTO <- ifelse(arquivo2$EVENTO == 1, "CONSULTAS", arquivo2$arquivo2.EVENTO)
arquivo2$arquivo2.EVENTO <- ifelse(arquivo2$EVENTO > 1 & arquivo2$EVENTO <=24, "EXAMES", arquivo2$arquivo2.EVENTO)
Gostaria de saber se existe a possibilidade de ao inves de usar "data.frame(arquivo2,arquivo2$EVENTO)" existe alguma forma de armazenar o nome do procedimento em uma variavel da mesma forma que nomeei no SAS de "EVENTOCD".
Feito esta parte de nomear todos os codigos presentes na coluna de evento, existe outra coluna com codigos de 8 digitos que registro em uma variavel chamada "CODAMB_8" que são definidos em tabela AMB e CBHPM que defino qual procedimento se refere nas variaveis "CODEVF" e "CBHPM"que no SAS faço da seguinte forma:
IF CODAMB_8 = '00010014' THEN CODEVF= 'CONSULTAS';
IF CODAMB_8 = '19010010' THEN CODEVF= 'EXAMES';
e dai por diante.
IF CODAMB_8='10101012' THEN CBHPM='CONSULTAS';
IF CODAMB_8='30713102' THEN CBHPM='EXAMES';
Por fim, depois de definir através do codigo de "EVENTO" armazenados em "EVENTOCD" e codigos AMB e CBHPM armazenados em "CODEVF" e "CBHPM", faço uma ultima classificação chamada "EVENTOGR" da seguinte forma:
EVENTOGR=CODEVF; *A variavel EVENTOGR recebe o procedimento armazenado em CODEVF*;
IF CODEVF=' ' THEN EVENTOGR=CBHPM;*Se variavel CODEVF estiver em branco, variavel EVENTOGR recebe o procedimento armazenado em CBHPM*;
IF (CODEVF=' ' and CBHPM=' ') THEN EVENTOGR=EVENTOCD; *Se variavel CODEVF e CBHPM estiver em branco, variavel EVENTOGR recebe o procedimento armazenado em EVENTOCD*;
IF (CODEVF=' ' and CBHPM='vazio') THEN EVENTOGR=EVENTOCD;*Se variavel CODEVF em branco e CBHPM classificado como 'vazio', variavel EVENTOGR recebe o procedimento armazenado em EVENTOCD*
Existe alguma comando especifo no R para tal analise?
Trabalho com análise de banco de operadoras de saúde utilizando o SAS como ferramenta de trabalho.
Entretanto estou migrando para o R devido ao fato de ser gratuito e já consegui resolver boa parte do que necessito para a leitura dos dados.
Entretanto existe uma coluna que possuem codigos de eventos de 1 até 65 que representam diversos tipos de procedimentos médicos.
no SAS classifico da seguinte forma, criando a partir da variavel "EVENTO" uma nova variavel "EVENTOCD":
IF (EVENTO = 1) THEN EVENTOCD = 'CONSULTAS';
IF (EVENTO > 1 AND EVENTO <= 24) THEN EVENTOCD = 'EXAMES';
e dai por diante.
No R, eu consegui fazer isto da seguinte forma
arquivo2<- data.frame(arquivo2,arquivo2$EVENTO);
arquivo2$arquivo2.EVENTO <- ifelse(arquivo2$EVENTO == 1, "CONSULTAS", arquivo2$arquivo2.EVENTO)
arquivo2$arquivo2.EVENTO <- ifelse(arquivo2$EVENTO > 1 & arquivo2$EVENTO <=24, "EXAMES", arquivo2$arquivo2.EVENTO)
Gostaria de saber se existe a possibilidade de ao inves de usar "data.frame(arquivo2,arquivo2$EVENTO)" existe alguma forma de armazenar o nome do procedimento em uma variavel da mesma forma que nomeei no SAS de "EVENTOCD".
Feito esta parte de nomear todos os codigos presentes na coluna de evento, existe outra coluna com codigos de 8 digitos que registro em uma variavel chamada "CODAMB_8" que são definidos em tabela AMB e CBHPM que defino qual procedimento se refere nas variaveis "CODEVF" e "CBHPM"que no SAS faço da seguinte forma:
IF CODAMB_8 = '00010014' THEN CODEVF= 'CONSULTAS';
IF CODAMB_8 = '19010010' THEN CODEVF= 'EXAMES';
e dai por diante.
IF CODAMB_8='10101012' THEN CBHPM='CONSULTAS';
IF CODAMB_8='30713102' THEN CBHPM='EXAMES';
Por fim, depois de definir através do codigo de "EVENTO" armazenados em "EVENTOCD" e codigos AMB e CBHPM armazenados em "CODEVF" e "CBHPM", faço uma ultima classificação chamada "EVENTOGR" da seguinte forma:
EVENTOGR=CODEVF; *A variavel EVENTOGR recebe o procedimento armazenado em CODEVF*;
IF CODEVF=' ' THEN EVENTOGR=CBHPM;*Se variavel CODEVF estiver em branco, variavel EVENTOGR recebe o procedimento armazenado em CBHPM*;
IF (CODEVF=' ' and CBHPM=' ') THEN EVENTOGR=EVENTOCD; *Se variavel CODEVF e CBHPM estiver em branco, variavel EVENTOGR recebe o procedimento armazenado em EVENTOCD*;
IF (CODEVF=' ' and CBHPM='vazio') THEN EVENTOGR=EVENTOCD;*Se variavel CODEVF em branco e CBHPM classificado como 'vazio', variavel EVENTOGR recebe o procedimento armazenado em EVENTOCD*
Existe alguma comando especifo no R para tal analise?
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
Re: Duvidas procedimentos SAS x R
Boa Tarde Jean!
Eu procurei fazer os comandos da forma que ficasse mais fácil para você entender, como eu não sei todas as características de seus dados eu tentei fazer os comandos de forma que funcione em todas as situações. É possível que haja algum erro, pois não tenho os dados aqui para testar, então faça o teste aí e se algo der errado me avise para que eu conserte.
Tente o seguinte:
attach(arquivo2) # cada coluna do arquivo2 será reconhecida como uma variável
eventocd <- ifelse(EVENTO == 1, "CONSULTAS", EVENTO)
eventocd <- ifelse(EVENTO > 1 & EVENTO <=24, "EXAMES", EVENTO)
Caso os dados contidos em EVENTO fiquem apenas no intervalo de 1 a 24 então você pode simplificar os comandos acima da seguinte forma:
eventocd <- ifelse(EVENTO == 1, "CONSULTAS", "EXAMES")
Já na segunta parte tente esses comandos:
CODEVF<- ifelse(CODAMB_8 = "00010014", "CONSULTAS", " ")
CODEVF<- ifelse(CODAMB_8 = "19010010", "EXAMES", " ")
e dai por diante.
CBHPM <- ifelse(CODAMB_8 = "10101012", "CONSULTAS", " ")
CBHPM <- ifelse(CODAMB_8 = "30713102", "EXAMES", " ")
Por fim faça o seguinte:
EVENTOGR<-ifelse(CODEVF ==" ", CBHPM, CODEVF)
EVENTOGR<-ifelse(EVENTOGR ==" ", EVENTOCD, EVENTOGR)
EVENTOGR<-ifelse(EVENTOGR =="vazio", EVENTOCD, EVENTOGR)
Caso tenha alguma dúvida pode perguntar.
Att,
Gustavo Mello Reis
Eu procurei fazer os comandos da forma que ficasse mais fácil para você entender, como eu não sei todas as características de seus dados eu tentei fazer os comandos de forma que funcione em todas as situações. É possível que haja algum erro, pois não tenho os dados aqui para testar, então faça o teste aí e se algo der errado me avise para que eu conserte.
Tente o seguinte:
attach(arquivo2) # cada coluna do arquivo2 será reconhecida como uma variável
eventocd <- ifelse(EVENTO == 1, "CONSULTAS", EVENTO)
eventocd <- ifelse(EVENTO > 1 & EVENTO <=24, "EXAMES", EVENTO)
Caso os dados contidos em EVENTO fiquem apenas no intervalo de 1 a 24 então você pode simplificar os comandos acima da seguinte forma:
eventocd <- ifelse(EVENTO == 1, "CONSULTAS", "EXAMES")
Já na segunta parte tente esses comandos:
CODEVF<- ifelse(CODAMB_8 = "00010014", "CONSULTAS", " ")
CODEVF<- ifelse(CODAMB_8 = "19010010", "EXAMES", " ")
e dai por diante.
CBHPM <- ifelse(CODAMB_8 = "10101012", "CONSULTAS", " ")
CBHPM <- ifelse(CODAMB_8 = "30713102", "EXAMES", " ")
Por fim faça o seguinte:
EVENTOGR<-ifelse(CODEVF ==" ", CBHPM, CODEVF)
EVENTOGR<-ifelse(EVENTOGR ==" ", EVENTOCD, EVENTOGR)
EVENTOGR<-ifelse(EVENTOGR =="vazio", EVENTOCD, EVENTOGR)
Caso tenha alguma dúvida pode perguntar.
Att,
Gustavo Mello Reis
Re: Duvidas procedimentos SAS x R
Boa tarde Gustavo,
Primeiramente obrigado pela ajuda.
Entendi o que você fez, é bem parecido com o que preciso, porém esqueci de passar algumas informações.
Eu preciso que estas classificações de "EVENTOCD", "CODEVF", e "CBHPM" e a condição da criação da variavel EVENTOGR fiquem dentro do mesmo arquivo, ou seja "arquivo2". Posteriormente irei criar algumas tabelas de contigências com outras variaveis do banco, por exemplo, quantos consultas ocorrendo dentro de uma certa localização, quais eventos existentes dentro de uma guia de internação especifica, qual os valores totais de consultas, exames e etc. Também faço uma mescla deste banco com outro banco, porém isto é outro assunto e já consegui resolver.
Nesta primeira imagem consta como procedo no SAS para tais classificações. A classificação "EVENTOCD" está completa, todos os eventos conforme preciso definir. Já as "CODEVF" e "CBHPM" estão apenas exemplos de 2 códigos existentes, pois existem milhares de códigos a serem classificados.
Já nesta imagem abaixo é possivel observar a frequencia dos eventos classificados a partir do "EVENTOCD"
E por fim, da forma que havia feito no R
Aqui consta os arquivos os quais fiz o teste e o script q utilizei.
script arquivo teste.txt
teste.txt
Desde já obrigado pela sua colaboração!!!
Jean Leite
Primeiramente obrigado pela ajuda.
Entendi o que você fez, é bem parecido com o que preciso, porém esqueci de passar algumas informações.
Eu preciso que estas classificações de "EVENTOCD", "CODEVF", e "CBHPM" e a condição da criação da variavel EVENTOGR fiquem dentro do mesmo arquivo, ou seja "arquivo2". Posteriormente irei criar algumas tabelas de contigências com outras variaveis do banco, por exemplo, quantos consultas ocorrendo dentro de uma certa localização, quais eventos existentes dentro de uma guia de internação especifica, qual os valores totais de consultas, exames e etc. Também faço uma mescla deste banco com outro banco, porém isto é outro assunto e já consegui resolver.
Nesta primeira imagem consta como procedo no SAS para tais classificações. A classificação "EVENTOCD" está completa, todos os eventos conforme preciso definir. Já as "CODEVF" e "CBHPM" estão apenas exemplos de 2 códigos existentes, pois existem milhares de códigos a serem classificados.
Já nesta imagem abaixo é possivel observar a frequencia dos eventos classificados a partir do "EVENTOCD"
E por fim, da forma que havia feito no R
Aqui consta os arquivos os quais fiz o teste e o script q utilizei.
script arquivo teste.txt
teste.txt
Desde já obrigado pela sua colaboração!!!
Jean Leite
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
Re: Duvidas procedimentos SAS x R
Boa noite Jean,
Vejo que você tem um bom conhecimento em programação, então irei utilizar uns comandos mais adequados para seu caso, se tiver alguma dúvida me pergunte.
Com relação ao fato de que EVENTOCD e as demais variáveis precisarem estar dentro de arquivo2, não vejo problema algum em trabalhar com elas separadamente e depois fazer a junção da mesma forma que você fez no começo:
arquivo2<- data.frame(arquivo2, EVENTOCD, CODEVF, CBHPM) # fazer isso no final de tudo
Vamos aos códigos:
attach(arquivo2) # cada coluna do arquivo2 será reconhecida como uma variável
eventocd<- vector("character", length=length(EVENTO)) #criando a variável eventocd
eventocd[EVENTO == 1]<- "CONSULTAS"
eventocd[EVENTO > 1 & EVENTO <=24] <- "EXAMES"
......
Já na segunta parte tente esses comandos:
CODEVF <-vector("character", length=length(CODAMB_8))
CODEVF[CODAMB_8 == "00010014"]<- "CONSULTAS"
CODEVF[CODAMB_8 == "19010010"]<- "EXAMES"
......
Obs: Caso o programa R reconheça a variável CODAMB_8 como sendo numérica, então você não deve usar aspas nos números, ou seja:
CODEVF[CODAMB_8 == 10014]<- "CONSULTAS"
CODEVF[CODAMB_8 == 19010010]<- "EXAMES"
CBHPM <-vector("character", length=length(CODAMB_8))
CBHPM[CODAMB_8 == "10101012"]<- "CONSULTAS"
CBHPM [CODAMB_8 == "30713102"]<- "EXAMES"
…….
obs2: mesma observação feita acima
Por fim faça o seguinte:
EVENTOGR<-CODEVF
EVENTOGR[CODEVF ==" "]<- CBHPM[CODEVF ==" "]
EVENTOGR[EVENTOGR ==" " ] <- EVENTOCD[EVENTOGR ==" "]
EVENTOGR [EVENTOGR =="vazio"]<- EVENTOCD[EVENTOGR =="vazio"]
detach(arquivo2) # desfaz o attach()
arquivo2<- data.frame(arquivo2, EVENTOCD, CODEVF, CBHPM)
Novamente eu digo que pode haver algum erro, pois só mesmo rodando os dados para detectar todos os erros possíveis, portanto qualquer problema me avise que eu faço as correções.
Vejo que você tem um bom conhecimento em programação, então irei utilizar uns comandos mais adequados para seu caso, se tiver alguma dúvida me pergunte.
Com relação ao fato de que EVENTOCD e as demais variáveis precisarem estar dentro de arquivo2, não vejo problema algum em trabalhar com elas separadamente e depois fazer a junção da mesma forma que você fez no começo:
arquivo2<- data.frame(arquivo2, EVENTOCD, CODEVF, CBHPM) # fazer isso no final de tudo
Vamos aos códigos:
attach(arquivo2) # cada coluna do arquivo2 será reconhecida como uma variável
eventocd<- vector("character", length=length(EVENTO)) #criando a variável eventocd
eventocd[EVENTO == 1]<- "CONSULTAS"
eventocd[EVENTO > 1 & EVENTO <=24] <- "EXAMES"
......
Já na segunta parte tente esses comandos:
CODEVF <-vector("character", length=length(CODAMB_8))
CODEVF[CODAMB_8 == "00010014"]<- "CONSULTAS"
CODEVF[CODAMB_8 == "19010010"]<- "EXAMES"
......
Obs: Caso o programa R reconheça a variável CODAMB_8 como sendo numérica, então você não deve usar aspas nos números, ou seja:
CODEVF[CODAMB_8 == 10014]<- "CONSULTAS"
CODEVF[CODAMB_8 == 19010010]<- "EXAMES"
CBHPM <-vector("character", length=length(CODAMB_8))
CBHPM[CODAMB_8 == "10101012"]<- "CONSULTAS"
CBHPM [CODAMB_8 == "30713102"]<- "EXAMES"
…….
obs2: mesma observação feita acima
Por fim faça o seguinte:
EVENTOGR<-CODEVF
EVENTOGR[CODEVF ==" "]<- CBHPM[CODEVF ==" "]
EVENTOGR[EVENTOGR ==" " ] <- EVENTOCD[EVENTOGR ==" "]
EVENTOGR [EVENTOGR =="vazio"]<- EVENTOCD[EVENTOGR =="vazio"]
detach(arquivo2) # desfaz o attach()
arquivo2<- data.frame(arquivo2, EVENTOCD, CODEVF, CBHPM)
Novamente eu digo que pode haver algum erro, pois só mesmo rodando os dados para detectar todos os erros possíveis, portanto qualquer problema me avise que eu faço as correções.
Re: Duvidas procedimentos SAS x R
Boa noite Gustavo,
Muito obrigado!!!
"EVENTOCD" ok, fiz aqui em casa agora e deu certinho. Restante irei fazer amanhã no serviço pois não tenho os dados aqui agora e te retorno.
Abraço!
Muito obrigado!!!
"EVENTOCD" ok, fiz aqui em casa agora e deu certinho. Restante irei fazer amanhã no serviço pois não tenho os dados aqui agora e te retorno.
Abraço!
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
Re: Duvidas procedimentos SAS x R
Bom dia Gustavo,
Quase tudo funcionou perfeitamente, os dados batem da forma que extraio no SAS.
Somente "EVENTOGR" que não bate.
No SAS a ideia é o seguinte:
"EVENTOCD" são classificações particulares de cada operadora e esta preenchido para todas as linhas do banco. "CODEVF" e "CBHPM" são tabelas nacionais de procedimentos medicos.
A variavel "EVENTOGR" é criada para estudar se os codigos das tabelas condizem com o procedimento "EVENTOCD" da operadora.
Em um primeiro momento, esta variavel "EVENTOGR" recebe o procedimento de "CODEVF", se este estiver em branco, vai receber "CBHPM". Mas se mesmo assim, "CODEVF" estiver em branco e "CBHPM" estiver em branco ou vazio, receberá o procedimento armezenado pela classificação da operadora em "EVENTOCD". Resumindo, no SAS fica desta forma:
EVENTOGR = CODEVF;
IF CODEVF = ' ' THEN EVENTOGR=CBHPM;
IF ( CODEVF = ' ' and CBHPM = ' ' ) THEN EVENTOGR = EVENTOCD;
IF ( CODEVF = ' ' and CBHPM = 'vazio' ) THEN EVENTOGR = EVENTOCD;
Você me orientou a testar:
EVENTOGR <- CODEVF
EVENTOGR [ CODEVF == " " ] <- CBHPM [ CODEVF == " " ]
EVENTOGR [ EVENTOGR == " " ] <- EVENTOCD [ EVENTOGR == " " ]
EVENTOGR [ EVENTOGR == "vazio" ] <- EVENTOCD [ EVENTOGR == "vazio" ]
E ocorreu que "EVENTOGR" não foram classificados para muitos eventos do banco, o que não deve ocorrer, pois este procedimento sempre terá alguma classificação, ou "CODEVF", ou "CBHPM", ou "EVENTOCD".
Estive olhando pelo que você me passou e não testei aqui pois só tenho os arquivos por completo no meu trabalho, "EVENTOGR" não teria que proceder desta forma como descrevo abaixo para ser similar ao comando do SAS?
EVENTOGR <- CODEVF
EVENTOGR [ CODEVF == " " ] <- CBHPM [ CODEVF == " " ]
EVENTOGR [ CODEVF == " " & CBHPM == " " ] <- EVENTOCD [ CODEVF == " " & CBHPM == " " ]
EVENTOGR [ CODEVF == " " & CBHPM == "vazio" ] <- EVENTOCD [ CODEVF == " " & CBHPM == "vazio" ]
Obrigado pela colaboração,
Jean Leite
Quase tudo funcionou perfeitamente, os dados batem da forma que extraio no SAS.
Somente "EVENTOGR" que não bate.
No SAS a ideia é o seguinte:
"EVENTOCD" são classificações particulares de cada operadora e esta preenchido para todas as linhas do banco. "CODEVF" e "CBHPM" são tabelas nacionais de procedimentos medicos.
A variavel "EVENTOGR" é criada para estudar se os codigos das tabelas condizem com o procedimento "EVENTOCD" da operadora.
Em um primeiro momento, esta variavel "EVENTOGR" recebe o procedimento de "CODEVF", se este estiver em branco, vai receber "CBHPM". Mas se mesmo assim, "CODEVF" estiver em branco e "CBHPM" estiver em branco ou vazio, receberá o procedimento armezenado pela classificação da operadora em "EVENTOCD". Resumindo, no SAS fica desta forma:
EVENTOGR = CODEVF;
IF CODEVF = ' ' THEN EVENTOGR=CBHPM;
IF ( CODEVF = ' ' and CBHPM = ' ' ) THEN EVENTOGR = EVENTOCD;
IF ( CODEVF = ' ' and CBHPM = 'vazio' ) THEN EVENTOGR = EVENTOCD;
Você me orientou a testar:
EVENTOGR <- CODEVF
EVENTOGR [ CODEVF == " " ] <- CBHPM [ CODEVF == " " ]
EVENTOGR [ EVENTOGR == " " ] <- EVENTOCD [ EVENTOGR == " " ]
EVENTOGR [ EVENTOGR == "vazio" ] <- EVENTOCD [ EVENTOGR == "vazio" ]
E ocorreu que "EVENTOGR" não foram classificados para muitos eventos do banco, o que não deve ocorrer, pois este procedimento sempre terá alguma classificação, ou "CODEVF", ou "CBHPM", ou "EVENTOCD".
Estive olhando pelo que você me passou e não testei aqui pois só tenho os arquivos por completo no meu trabalho, "EVENTOGR" não teria que proceder desta forma como descrevo abaixo para ser similar ao comando do SAS?
EVENTOGR <- CODEVF
EVENTOGR [ CODEVF == " " ] <- CBHPM [ CODEVF == " " ]
EVENTOGR [ CODEVF == " " & CBHPM == " " ] <- EVENTOCD [ CODEVF == " " & CBHPM == " " ]
EVENTOGR [ CODEVF == " " & CBHPM == "vazio" ] <- EVENTOCD [ CODEVF == " " & CBHPM == "vazio" ]
Obrigado pela colaboração,
Jean Leite
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
Re: Duvidas procedimentos SAS x R
Bom dia!
Em relação a sua dúvida, realmente para seguir o mesmo raciocínio que foi feito no SAS os comandos devem ficar como você descreveu. No entanto acho que o resultado final será o mesmo, eu apenas procurei simplificar, veja a explicação:
comando utilizado por você:
EVENTOGR <- CODEVF
EVENTOGR [ CODEVF == " " ] <- CBHPM [ CODEVF == " " ]
EVENTOGR [ CODEVF == " " & CBHPM == " " ] <- EVENTOCD [ CODEVF == " " & CBHPM == " " ]
EVENTOGR [ CODEVF == " " & CBHPM == "vazio" ] <- EVENTOCD [ CODEVF == " " & CBHPM == "vazio" ]
comando que utilizei diferente:
1) EVENTOGR [ EVENTOGR == " " ] <- EVENTOCD [ EVENTOGR == " " ]
explicação: se CODEVF == " " & CBHPM == " " então EVENTOGR == " " devido aos comandos aplicados anteriormente.
2) EVENTOGR [ EVENTOGR == "vazio" ] <- EVENTOCD [ EVENTOGR == "vazio" ]
explicação: se CODEVF == " " & CBHPM == "vazio" então EVENTOGR == "vazio" devido aos comandos aplicados anteriormente.
Caso realmente esteja dando diferença em relação ao SAS a sugestão que posso dar é que verifique no R como fica essa descrição "vazio" se tem alguma letra maiúscula, se tem algum espaço em branco antes ou depois, se possui duas aspas ou se aparece de alguma outra forma diferente.
Em relação a sua dúvida, realmente para seguir o mesmo raciocínio que foi feito no SAS os comandos devem ficar como você descreveu. No entanto acho que o resultado final será o mesmo, eu apenas procurei simplificar, veja a explicação:
comando utilizado por você:
EVENTOGR <- CODEVF
EVENTOGR [ CODEVF == " " ] <- CBHPM [ CODEVF == " " ]
EVENTOGR [ CODEVF == " " & CBHPM == " " ] <- EVENTOCD [ CODEVF == " " & CBHPM == " " ]
EVENTOGR [ CODEVF == " " & CBHPM == "vazio" ] <- EVENTOCD [ CODEVF == " " & CBHPM == "vazio" ]
comando que utilizei diferente:
1) EVENTOGR [ EVENTOGR == " " ] <- EVENTOCD [ EVENTOGR == " " ]
explicação: se CODEVF == " " & CBHPM == " " então EVENTOGR == " " devido aos comandos aplicados anteriormente.
2) EVENTOGR [ EVENTOGR == "vazio" ] <- EVENTOCD [ EVENTOGR == "vazio" ]
explicação: se CODEVF == " " & CBHPM == "vazio" então EVENTOGR == "vazio" devido aos comandos aplicados anteriormente.
Caso realmente esteja dando diferença em relação ao SAS a sugestão que posso dar é que verifique no R como fica essa descrição "vazio" se tem alguma letra maiúscula, se tem algum espaço em branco antes ou depois, se possui duas aspas ou se aparece de alguma outra forma diferente.
Re: Duvidas procedimentos SAS x R
Boa tarde Gustavo,
Refiz aqui as análises e cheguei a conclusão que somente a primeira condição ( EVENTOGR <- CODEVF ) está sendo elaborada, conforme segue a explicação abaixo:
Nessa primeira imagem é possivel observar todos os codigos de eventos presentes no banco e sua classificação "EVENTOCD". Todos foram preenchidos.
E na imagem abaixo é possivel observar a ausencia de classificação para "CODEVF" e "CBHPM". Porém "EVENTOGR" 100% classificado.
Então 502.923 procedimentos pela variavel "CODEVF" não tiveram classificação, sendo assim, através da segunda condição, o "EVENTOGR" deve receber o procedimento armazenado em "CBHPM", e pela variável "CBHPM" 408.608 procedimentos não tiveram classificação. Logo apenas 94.315 procedimentos receberam a classificação "CBHPM" na variavel "EVENTOGR" e o restante dos 408.608 receberam o procedimento armazenado em "EVENTOCD".
Então extrai pelo R conforme me ensinou e veriquei que somente a primeira condição está sendo realizada conforme está destacado abaixo:
Sendo que "EVENTOGR" é da forma que escrevi,similar ao SAS, e "EVENTOGR.1" é da forma que me passou e ambos realmente é o mesmo resultado. Olhei a descrição de "vazio" e está tudo minusculo mesmo e sem espaço conforme mostra na imagem acima.
Você tem alguma sugestão do que posso testar?
Mais uma vez, obrigado pela sua colaboração!!!
Abraço!
Refiz aqui as análises e cheguei a conclusão que somente a primeira condição ( EVENTOGR <- CODEVF ) está sendo elaborada, conforme segue a explicação abaixo:
Nessa primeira imagem é possivel observar todos os codigos de eventos presentes no banco e sua classificação "EVENTOCD". Todos foram preenchidos.
E na imagem abaixo é possivel observar a ausencia de classificação para "CODEVF" e "CBHPM". Porém "EVENTOGR" 100% classificado.
Então 502.923 procedimentos pela variavel "CODEVF" não tiveram classificação, sendo assim, através da segunda condição, o "EVENTOGR" deve receber o procedimento armazenado em "CBHPM", e pela variável "CBHPM" 408.608 procedimentos não tiveram classificação. Logo apenas 94.315 procedimentos receberam a classificação "CBHPM" na variavel "EVENTOGR" e o restante dos 408.608 receberam o procedimento armazenado em "EVENTOCD".
Então extrai pelo R conforme me ensinou e veriquei que somente a primeira condição está sendo realizada conforme está destacado abaixo:
Sendo que "EVENTOGR" é da forma que escrevi,similar ao SAS, e "EVENTOGR.1" é da forma que me passou e ambos realmente é o mesmo resultado. Olhei a descrição de "vazio" e está tudo minusculo mesmo e sem espaço conforme mostra na imagem acima.
Você tem alguma sugestão do que posso testar?
Mais uma vez, obrigado pela sua colaboração!!!
Abraço!
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
Re: Duvidas procedimentos SAS x R
Acho que pode ser o espaço que utilzei entre as aspas, quando na verdade não deve haver nada entre as aspas, tente o seguinte:
EVENTOGR <- CODEVF
EVENTOGR [ CODEVF == "" ] <- CBHPM [ CODEVF == "" ]
EVENTOGR [ EVENTOGR == "" ] <- EVENTOCD [ EVENTOGR == "" ]
EVENTOGR [ EVENTOGR == "vazio" ] <- EVENTOCD [ EVENTOGR == "vazio" ]
EVENTOGR <- CODEVF
EVENTOGR [ CODEVF == "" ] <- CBHPM [ CODEVF == "" ]
EVENTOGR [ EVENTOGR == "" ] <- EVENTOCD [ EVENTOGR == "" ]
EVENTOGR [ EVENTOGR == "vazio" ] <- EVENTOCD [ EVENTOGR == "vazio" ]
Re: Duvidas procedimentos SAS x R
Era isto mesmo, funcinou perfeitamente!!!
Agora posso dizer que 80% do script de leitura dos dados está conforme necessito.
Este arquivo2 refere-se a um banco de despesas.
Preciso separar este banco apenas onde as despesas são maiores que zero (é o que se espera de um banco de despesas, mas infelismente tem despesas zeradas e com valores negativos), então fiz o seguinte comando:
sinistrados<- arquivo2[arquivo2$VLSIN > 0,]
Posterior, quero fazer um corte de um periodo de um ano pela data de ocorrencia da despesas, estou tentando o seguinte comando e tá dando erro, vc sabe o que devo fazer?
sinind1 = (sinistrados[sinistrados$DTOCOR > as.Date ("2010-12-31") & sinistrados$DTOCOR <= as.Date ("2011-12-31")])
Erro em `[.data.frame`(sinistrados, sinistrados$DTOCOR > as.Date("2010-12-31") & :
undefined columns selected
Obrigado!
Agora posso dizer que 80% do script de leitura dos dados está conforme necessito.
Este arquivo2 refere-se a um banco de despesas.
Preciso separar este banco apenas onde as despesas são maiores que zero (é o que se espera de um banco de despesas, mas infelismente tem despesas zeradas e com valores negativos), então fiz o seguinte comando:
sinistrados<- arquivo2[arquivo2$VLSIN > 0,]
Posterior, quero fazer um corte de um periodo de um ano pela data de ocorrencia da despesas, estou tentando o seguinte comando e tá dando erro, vc sabe o que devo fazer?
sinind1 = (sinistrados[sinistrados$DTOCOR > as.Date ("2010-12-31") & sinistrados$DTOCOR <= as.Date ("2011-12-31")])
Erro em `[.data.frame`(sinistrados, sinistrados$DTOCOR > as.Date("2010-12-31") & :
undefined columns selected
Obrigado!
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
Re: Duvidas procedimentos SAS x R
Antes de utilizar sinistrados$DTOCOR, você deve fazer com que o R reconheça-o como datas, algo assim:
sinistrados$DTOCOR<-as.Date(sinistrados$DTOCOR, parâmetros)
Onde eu coloquei parâmetros você deve preencher com os parâmetros que expliquei no tópico do link abaixo:
https://estatisticanor.forumeiros.com/t32-dicas-para-manipulacao-de-dados
sinistrados$DTOCOR<-as.Date(sinistrados$DTOCOR, parâmetros)
Onde eu coloquei parâmetros você deve preencher com os parâmetros que expliquei no tópico do link abaixo:
https://estatisticanor.forumeiros.com/t32-dicas-para-manipulacao-de-dados
Re: Duvidas procedimentos SAS x R
Ok, já havia feito isso no inicio.
arquivo2$DTOCOR <- as.Date (arquivo2$DTOCOR, "%d/%m/%Y")
O erro deve ser no meu comando de pesquisa, vou estudar aqui mais um pouco sobre esses procedimentos.
Obrigado
arquivo2$DTOCOR <- as.Date (arquivo2$DTOCOR, "%d/%m/%Y")
O erro deve ser no meu comando de pesquisa, vou estudar aqui mais um pouco sobre esses procedimentos.
Obrigado
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
Re: Duvidas procedimentos SAS x R
Realmente o erro era de sintaxe.
O comando certo é:
sinind1 <- sinistrados[sinistrados$DTOCOR > "2010-12-31" & sinistrados$DTOCOR <= "2011-12-31",]
pois o campo de data ja esta formato como data.
Dai quando separado da forma citada acima, somente no ano de 2011, aparece para todas as colunas o item:
NA's : 1
Quando peço a soma e summary da variavel numerica aparece a seguinte mensagem:
sum (sinind1$VLSIN)
[1] NA
summary (sinind1$VLSIN)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
0.01 4.77 18.00 40.71 42.60 55000.00 1
Acredito que surgiu esse NA's que não sei oq é por algum erro nos meus comandos.
Você tem alguma informação de como posso retirar isto ou proceder da forma correta?
Obrigado!
O comando certo é:
sinind1 <- sinistrados[sinistrados$DTOCOR > "2010-12-31" & sinistrados$DTOCOR <= "2011-12-31",]
pois o campo de data ja esta formato como data.
Dai quando separado da forma citada acima, somente no ano de 2011, aparece para todas as colunas o item:
NA's : 1
Quando peço a soma e summary da variavel numerica aparece a seguinte mensagem:
sum (sinind1$VLSIN)
[1] NA
summary (sinind1$VLSIN)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
0.01 4.77 18.00 40.71 42.60 55000.00 1
Acredito que surgiu esse NA's que não sei oq é por algum erro nos meus comandos.
Você tem alguma informação de como posso retirar isto ou proceder da forma correta?
Obrigado!
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
Re: Duvidas procedimentos SAS x R
Não consegui achar o motivo do erro acima, mas dai pensei tipo no evento complementar.
Existe uma variavel que é classificado apenas de duas formas, então fiz o seguinte:
sinind1 <- sinistrados[sinistrados$DTOCOR > as.Date ("2010-12-31") & sinistrados$DTOCOR <= as.Date ("2011-12-31"),]
sinind1$tipoevento <- vector("character", length=length(sinind1$TPEV)) #criando a variável tipo de evento#
sinind1$tipoevento [ sinind1$TPEV == 1 ] <- "ACIDENTE"
sinind1$tipoevento [ sinind1$TPEV == 2 ] <- "OCUPACIONAL"
sinind1$tipoevento <- as.factor (sinind1$tipoevento)
sinind1 <- sinind1[sinind1$tipoevento == "ACIDENTE" | sinind1$tipoevento == "OCUPACIONAL",]
Dai não aparece mais este NA's.
Não sei se isso é a forma mais fácil de corrigir isto...
Existe uma variavel que é classificado apenas de duas formas, então fiz o seguinte:
sinind1 <- sinistrados[sinistrados$DTOCOR > as.Date ("2010-12-31") & sinistrados$DTOCOR <= as.Date ("2011-12-31"),]
sinind1$tipoevento <- vector("character", length=length(sinind1$TPEV)) #criando a variável tipo de evento#
sinind1$tipoevento [ sinind1$TPEV == 1 ] <- "ACIDENTE"
sinind1$tipoevento [ sinind1$TPEV == 2 ] <- "OCUPACIONAL"
sinind1$tipoevento <- as.factor (sinind1$tipoevento)
sinind1 <- sinind1[sinind1$tipoevento == "ACIDENTE" | sinind1$tipoevento == "OCUPACIONAL",]
Dai não aparece mais este NA's.
Não sei se isso é a forma mais fácil de corrigir isto...
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
Re: Duvidas procedimentos SAS x R
Esse NA aparece quando tem algum valor faltando (valor ausente). Pelo summary que você postou é apenas uma linha que está com problema, então acho que você deve identificar qual linha é essa e verificar no arquivo original (sinistrados) se essa linha já estava com essa falta (NA), se estiver você deve ir retrocedendo até chegar na origem da falta.
Com relação ao comando sum (sinind1$VLSIN), para que ele ignore esse valor NA e faça a soma normal você deve fazer a seguinte adaptação:
sum (sinind1$VLSIN, na.rm=T)
Com relação ao comando sum (sinind1$VLSIN), para que ele ignore esse valor NA e faça a soma normal você deve fazer a seguinte adaptação:
sum (sinind1$VLSIN, na.rm=T)
Re: Duvidas procedimentos SAS x R
Boa tarde Gustavo,
Muito obrigado por todos seus esclarecimentos! Funcinou sim e foi de grande ajuda.
Vou estudar mais um pouco e ir desenvolvendo outros pontos que necessito. Se tiver mais alguma duvida eu postarei neste topico denovo pra não criar outro e agradeço pela sua colaboração. É muito bacana ter um forum pra discutir estes assuntos, meio que nós usuários do SAS e R não nos sentimos "abandonados" e temos alguém que entende para trocar experiências.
Abraço!
Muito obrigado por todos seus esclarecimentos! Funcinou sim e foi de grande ajuda.
Vou estudar mais um pouco e ir desenvolvendo outros pontos que necessito. Se tiver mais alguma duvida eu postarei neste topico denovo pra não criar outro e agradeço pela sua colaboração. É muito bacana ter um forum pra discutir estes assuntos, meio que nós usuários do SAS e R não nos sentimos "abandonados" e temos alguém que entende para trocar experiências.
Abraço!
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
Re: Duvidas procedimentos SAS x R
Boa tarde Gustavo e demais,
Surgiu outras dúvidas na linguagem do R, agora trabalhando com datas, e se alguém souber e poder me ajudar por favor, segue descrito o meu primeiro problema.
Descrição de um Campo Data
- Campos que representam datas necessitam que sejam identificados pelo SAS através de um formato de leitura, e armazenados como numéricos;
- O valor numérico armazenado representa o número de dias em relação a uma data base SAS.
No SAS a leitura do campo data é da seguinte forma:
Ou seja, a data inicial armazenada no SAS é de 01/01/1960 que corresponde a 0. No SAS é armazenado como número, pois preciso realizar vários cálculos através de várias datas.
O primeiro passo que faço no SAS para analise dos dados é definir o período, conforme segue:
No R fiz de forma similar, como segue abaixo, # antes de cada linha é só para indicar como faço os comandos no R;
#INICIO = as.Date("01-01-2010", "%d-%m-%Y")
#MEIO = as.Date("01-07-2010", "%d-%m-%Y")
#FIM = as.Date("31-12-2010", "%d-%m-%Y")
# ADICIONO AS VARIAVEIS NO ARQUIVO #
#colarquivo1 <- data.frame(colarquivo1, INICIO, MEIO, FIM)
Posterior, crio duas variáveis as quais chamo de DATABASE1 e DATABASE2. Pensei que no R, para ficar similar, deveria proceder da seguinte forma:
DTBASE1 <- vector("character", length=length(INICIO)) #criando a variável DATABASE1#
*IF INICIO <= DATAIN <= FIM THEN DTBASE1 = DATAIN; (commando no SAS)
#DTBASE1 [INICIO <= DATAIN <= FIM] <- DATAIN [INICIO <= DATAIN <= FIM] (comando como imagino que deva ser no R)
Erro: '<=' inesperado em "DTBASE1 [INICIO <= DATAIN <=". Então pelo q vejo no R, não é desta forma que especifico por exemplo 'a <= x < b'
*ELSE IF DATAIN < INICIO THEN DTBASE1 = INICIO;
#DTBASE1 [DATAIN < INICIO] <- INICIO [DATAIN < INICIO]
*ELSE IF DATAIN > FIM AND DATAIN ^='.' THEN DTBASE1 = 0;
#DTBASE1 [DATAIN > FIM & DATAIN != NA] <- 0 [DATAIN > FIM & DATAIN != NA]
*ELSE DTBASE1 = INICIO;
#DTBASE1 <- INICIO
Alguém poderia me ajudar no que devo fazer pra ajustar meus comandos?
Obrigado!
Surgiu outras dúvidas na linguagem do R, agora trabalhando com datas, e se alguém souber e poder me ajudar por favor, segue descrito o meu primeiro problema.
Descrição de um Campo Data
- Campos que representam datas necessitam que sejam identificados pelo SAS através de um formato de leitura, e armazenados como numéricos;
- O valor numérico armazenado representa o número de dias em relação a uma data base SAS.
No SAS a leitura do campo data é da seguinte forma:
Ou seja, a data inicial armazenada no SAS é de 01/01/1960 que corresponde a 0. No SAS é armazenado como número, pois preciso realizar vários cálculos através de várias datas.
O primeiro passo que faço no SAS para analise dos dados é definir o período, conforme segue:
No R fiz de forma similar, como segue abaixo, # antes de cada linha é só para indicar como faço os comandos no R;
#INICIO = as.Date("01-01-2010", "%d-%m-%Y")
#MEIO = as.Date("01-07-2010", "%d-%m-%Y")
#FIM = as.Date("31-12-2010", "%d-%m-%Y")
# ADICIONO AS VARIAVEIS NO ARQUIVO #
#colarquivo1 <- data.frame(colarquivo1, INICIO, MEIO, FIM)
Posterior, crio duas variáveis as quais chamo de DATABASE1 e DATABASE2. Pensei que no R, para ficar similar, deveria proceder da seguinte forma:
DTBASE1 <- vector("character", length=length(INICIO)) #criando a variável DATABASE1#
*IF INICIO <= DATAIN <= FIM THEN DTBASE1 = DATAIN; (commando no SAS)
#DTBASE1 [INICIO <= DATAIN <= FIM] <- DATAIN [INICIO <= DATAIN <= FIM] (comando como imagino que deva ser no R)
Erro: '<=' inesperado em "DTBASE1 [INICIO <= DATAIN <=". Então pelo q vejo no R, não é desta forma que especifico por exemplo 'a <= x < b'
*ELSE IF DATAIN < INICIO THEN DTBASE1 = INICIO;
#DTBASE1 [DATAIN < INICIO] <- INICIO [DATAIN < INICIO]
*ELSE IF DATAIN > FIM AND DATAIN ^='.' THEN DTBASE1 = 0;
#DTBASE1 [DATAIN > FIM & DATAIN != NA] <- 0 [DATAIN > FIM & DATAIN != NA]
*ELSE DTBASE1 = INICIO;
#DTBASE1 <- INICIO
Alguém poderia me ajudar no que devo fazer pra ajustar meus comandos?
Obrigado!
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
duvidas na programação
Boa tarde,
Continuo sem solução para a duvida postada no tópico acima, alguém sabe como resolver?
Abaixo segue a descrição do erro:
Desde já obrigado pela ajuda!
Continuo sem solução para a duvida postada no tópico acima, alguém sabe como resolver?
Abaixo segue a descrição do erro:
Desde já obrigado pela ajuda!
JeanLeite- Mensagens : 14
Data de inscrição : 17/05/2012
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|