28

I have a dataframe for which I need to add a factor column based on a conditional statement. Here is the data.

Code:

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

Question:

So, i want to add a column "periodframe" to the dataframe that has two entries: "pre-1991" and "post-1991" based on the condition for the column "year"?

the dataframe looks like this:

    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

etc.

iouraich
  • 2,944
  • 5
  • 29
  • 40

1 Answers1

56

you can use ifelse like this

dataframe$periodframe <- ifelse(dataframe$year > 1991,"post-1991", "pre-1991")
tdh186
  • 576
  • 5
  • 3
  • Does not that assume that year is declared as a numeric variable? I say so because in the dataframe "moroccostats", the first two column are declared as factor and the rest is declared as numeric. – iouraich May 15 '13 at 16:53
  • 4
    @smailov83 Then you have to convert to numeric `ifelse(as.numeric(as.character(df$year)),...`. – ziggystar May 15 '13 at 17:03
  • I don't know what it assumes, but it works when the data is read in as above. :) – Frank May 15 '13 at 17:03