Erstellen eine neue Variablen unter Verwendung von zwei Spalten, wenn sie unter Verwendung von R bestimmte Bedingungen erfüllen

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

Frage

Ich bin dieses Beispiel Daten Bereitstellung über meine Frage zu bekommen.

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)

Nun, ich brauche eine neue Variable (Spalte) benannte Daten $ hist mit den folgenden Bedingungen zu schaffen:

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

Ich habe versucht, die „ifelse“ Funktion zu verwenden, fiel aber kurz.

Ich hoffe, dass die Frage klar genug ist.

Vielen Dank für all die Hilfe,

Bazon

War es hilfreich?

Lösung

Die Lösung von Ramnath ist ausgezeichnet, aber es mit ifelse zu tun, könnten Sie es auf diese Weise tun:

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

Dies würde jedoch bedeuten, dass, wenn ein foson oder fosof <1 sind, würde es die Option für ==0 wählen, aber es scheint, aus Ihren Daten dies kein Problem sein würde.

Andere Tipps

Eine mögliche Lösung ist die folgende

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

Dies sollten Sie das gewünschte Ergebnis.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top