Criando uma nova variável usando duas colunas quando elas satisfazem certas condições usando r

StackOverflow https://stackoverflow.com/questions/3632245

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

Foi útil?

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
scroll top