2013-05-15 6 views
21

Ich habe ein Datenframe, für das ich eine Faktorspalte basierend auf einer bedingten Anweisung hinzufügen muss. Hier ist die data.Wie füge ich dem Datenrahmen basierend auf einer bedingten Anweisung aus einer anderen Spalte eine Faktorspalte hinzu?

Code:

morstats.agri.f <- moroccostats[c("year","agVA_g","agVA_ppp_g")] 
    morstats.agri.f 

Frage:

Also, ich möchte eine Spalte "periodframe", um die Datenrahmen hinzuzufügen, die zwei Einträge hat: "pre-1991" und "post-1991" basiert unter der Bedingung für die Spalte "Jahr"?

die Datenrahmen sieht wie folgt aus:

year agVA_g agVA_ppp_g 
1 1960 0.00 0.000000000 
2 1961 0.00 0.000000000 
3 1962 0.00 0.000000000 
4 1963 0.00 0.000000000 
5 1964 0.00 0.000000000 
6 1965 -0.13 -0.160505952 
7 1966 0.09 0.065780672 
8 1967 0.10 0.075941092 
9 1968 -0.04 -0.064963044 
10 1969 0.11 0.084530984 
11 1970 0.19 0.161963328 
12 1971 0.12 0.097397145 
13 1972 0.19 0.160263118 
14 1973 0.20 0.172040051 
15 1974 0.01 -0.012005158 
16 1975 0.14 0.111609284 
17 1976 -0.02 -0.044823054 
18 1977 0.32 0.299092259 
19 1978 0.13 0.104535675 
20 1979 0.20 0.171374920 

usw.

+1

verwenden ifelse kann denke ich, ein Komma in der ersten Zeile fehlt: 'moroccostats [, c (... '? – Frank

Antwort

40

Sie dieses

dataframe$periodframe <- ifelse(dataframe$year > 1991,"post-1991", "pre-1991") 
+0

Geht das nicht davon aus, dass das Jahr als numerische Variable deklariert ist? Ich sage das, weil im Dataframe" marokkostaten "die ersten beiden Spalten als Faktor deklariert sind und der Rest als nume deklariert ist Ric. – iouraich

+4

@ smailov83 Dann müssen Sie in numerische 'ifelse (as.numeric (as.character (df $ year)), ...'. – ziggystar

+0

Ich weiß nicht, was es annimmt, aber es funktioniert, wenn die Daten gelesen werden wie oben. :) – Frank

Verwandte Themen