la création d'une nouvelle variable en utilisant deux colonnes lorsqu'ils remplissent certaines conditions d'utilisation R

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

Question

Je fournirai cet exemple des données pour obtenir ma question sur.

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)

Maintenant, je dois créer une nouvelle variable (colonne) de données nommées $ hist avec les conditions suivantes:

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

J'ai essayé d'utiliser la fonction « ifelse », mais est tombé à court.

J'espère que la question est assez claire.

Merci pour toute l'aide,

Bazon

Était-ce utile?

La solution

La solution par Ramnath est excellente, mais le faire avec ifelse, vous pouvez le faire de cette façon:

data$hist <- ifelse(data$foson>=1,ifelse(data$fosof>=1,3,1),ifelse(data$fosof>=1,2,0))

Cela signifie toutefois que lorsque l'un des foson ou fosof sont <1 il choisirait l'option pour ==0, mais il semble de vos données, ce ne serait pas un problème.

Autres conseils

Une solution possible est de faire ce qui suit

data$hist = (data$foson >=1) + (data$fosof >=1)*2

Cela devrait vous donner le résultat souhaité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top