Generar una variable ficticia

Tengo problemas para generar las siguientes variables ficticias en R:

Estoy analizando datos de series temporales anuales (período de tiempo 1948-2009). Tengo dos preguntas:

  1. ¿Cómo puedo generar una variable ficticia para la observación nº 10, es decir, para el año 1957 (valor = 1 en 1957 y cero en caso contrario)?

  2. ¿Cómo puedo generar una variable ficticia que sea cero antes de 1957 y tome el valor 1 a partir de 1957 y hasta 2009?

Otra opción que puede funcionar mejor si tienes muchas variables es factor y model.matrix.

> year.f = factor(year)
> dummies = model.matrix(~year.f)

Esto incluirá una columna de intercepción (todos los unos) y una columna para cada uno de los años en su conjunto de datos, excepto uno, que será el "default" o valor de intercepción.

Puede cambiar cómo se elige el valor "por defecto" jugando con contrasts.arg en model.matrix.

Además, si quiere omitir el intercepto, puede eliminar la primera columna o añadir +0 al final de la fórmula.

Espero que esto sea útil.

Comentarios (10)

La forma más sencilla de producir estas variables ficticias es algo como lo siguiente:

> print(year)
[1] 1956 1957 1957 1958 1958 1959
> dummy  print(dummy)
[1] 0 1 1 0 0 0
> dummy2 = 1957)
> print(dummy2)
[1] 0 1 1 1 1 1

De forma más general, puede utilizar ifelse para elegir entre dos valores dependiendo de una condición. Así, si en lugar de una variable ficticia de 0 a 1, por alguna razón quiere utilizar, por ejemplo, 4 y 7, podría utilizar ifelse(año == 1957, 4, 7).

Comentarios (0)

Lo que normalmente hago para trabajar con este tipo de variables ficticias es

(1) ¿Cómo puedo generar una variable ficticia para la observación nº 10, es decir, para el año 1957 (valor = 1 en 1957 y cero en caso contrario)?


data$factor_year_1 
Comentarios (0)