
23 Ago
2011
23 Ago
'11
04:44
Caros, tenho um arquivo (arq1) com as variáveis codigo, valor, mes e ano. > str(arq1) 'data.frame': 1108685 obs. of 5 variables: $ codigo: int 10059020 10059020 10030000 10059020 10059020 10059020 10059020 10030000 10059020 10059020 ... $ valor : num 97159 39938 144 25002 800 ... $ mes : num 1 1 1 1 1 1 1 1 2 2 ... $ ano : chr "2009" "2009" "2009" "2009" ... $ trim : chr "1" "1" "1" "1" ... > head(arq1) codigo valor mes ano 1 10059020 97158.59 1 2009 2 10059020 39938.15 1 2009 3 10030000 143.95 1 2009 4 10059020 25002.10 1 2009 5 10059020 800.11 1 2009 6 10059020 263.32 1 2009 Desejo atribuir a variável trim o valor 1, 2, 3 ou 4 dependendo do mes. Só que o meu código está gerando a seguinte mensagem de erro: > if (arq1$mes<4) + { + arq1$trim = "1" + }else{ if(arq1$mes<7) { + arq1$trim = "2" + }else{ if(arq1$mes<10){ + arq1$trim = "3" + }else{ + arq1$trim = "4" + } + } + } Mensagens de aviso perdidas: In if (arq1$mes < 4) { : a condição tem comprimento > 1 e somente o primeiro elemento será usado Mensagens de aviso perdidas: In if (arq1$mes < 4) { : a condição tem comprimento > 1 e somente o primeiro elemento será usado E atribuindo a trim o valor 1 para todas as observações. > head(arq1) codigo valor mes ano trim 1 10059020 97158.59 1 2009 1 2 10059020 39938.15 1 2009 1 3 10030000 143.95 1 2009 1 4 10059020 25002.10 1 2009 1 5 10059020 800.11 1 2009 1 6 10059020 263.32 1 2009 1 O que fazer? Carlos Mendonça.

14:17
Benilton, muito obrigado. Funcionou perfeitamente, mas só para eu entender, pois não foi a 1a. vez que eu usei o if / else e deu esse tipo de erro. O que estava errado? Um abraço, Carlos Mendonça.

14:28
o if() testa 1 condicao apenas... a primeira. por exemplo: x = c(-1, 0, 1) if (x >= 0) doStuff() ao passo q vc espera que doStuff() rode para x==0 e x==1, na verdade doStuff() nao vai rodar de jeito nenhum... pq o primeiro elemento e' falso ( -1 >= 0 ==> FALSE).
5106
Idade (dias atrás)
5106
Última atividade (dias atrás)
3 comentários
2 participantes
participantes (2)
-
Benilton Carvalho
-
Carlos Mendonça