Criando uma nova variável usando duas colunas quando elas satisfazem certas condições usando r
-
26-09-2019 - |
Pergunta
Estou fornecendo este exemplo dados para transmitir minha pergunta.
aid=c(1,2,3,4,5,6,7,8,9,10)
foson=c(0,1,2,0,6,9,0,0,3,0)
fosof=c(0,0,2,3,0,0,0,5,0,0)
data=data.frame(aid,foson,fosof)
Agora, preciso criar uma nova variável (coluna) chamada Data $ hist com as seguintes condições:
if foson==0 and fosof==0, then hist = 0;
if foson >=1 and fosof==0, then hist = 1;
if foson==0 and fosof>=1, then hist = 2; and
if foson>=1 and fosof>=1, then hist = 3
Tentei usar a função "ifelse", mas fiquei aquém.
Espero que a pergunta seja clara o suficiente.
Obrigado por toda a ajuda,
Bazon
Solução
A solução de Ramnath é excelente, mas para fazê -lo com ifelse
Você poderia fazer desta maneira:
data$hist <- ifelse(data$foson>=1,ifelse(data$fosof>=1,3,1),ifelse(data$fosof>=1,2,0))
Isso significaria, no entanto, de onde qualquer um dos foson
ou fosof
são <1
ele selecionaria a opção para ==0
, mas parece que, a partir de seus dados, isso não seria um problema.
Outras dicas
Uma solução potencial é fazer o seguinte
data$hist = (data$foson >=1) + (data$fosof >=1)*2
Isso deve fornecer o resultado desejado.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow