Предположим, у меня есть переменная, которая длится в течение нескольких периодов.
Как количество лет, что у меня есть Ipod.
Итак, у меня был Ipod 1-го поколения с 2001 по 2004 год, а затем в 2005 году у меня был Ipod 2 и так далее. Так что мой фрейм данных будет выглядеть так:
2001 Ipod1
2002 Ipod1
2003 Ipod1
2004 Ipod1
2005 Ipod2
2006 Ipod2
2007 Ipod2
2008 Ipod2
2009 Ipod3
2010 Ipod3
То, что я хочу, - это создать фиктив на период, когда прибудет новая переменная, чтобы я получил:
Year Var Dummy
2001 Ipod1 1
2002 Ipod1 0
2003 Ipod1 0
2004 Ipod1 0
2005 Ipod2 1
2006 Ipod2 0
2007 Ipod2 0
2008 Ipod2 0
2009 Ipod3 1
2010 Ipod3 0
Пока я смог сделать это:
df = structure(list(Year = 2001:2010, Var = structure(c(1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 3L, 3L), .Label = c("Ipod1", "Ipod2", "Ipod3"
), class = "factor")), .Names = c("Year", "Var"), class = "data.frame", row.names = c(NA,
-10L))
df$number.in.group = unlist(lapply(table(df$Var),seq.int))
df$dummy = ifelse(df$number.in.group == 1,1,0)
df$dummy[1]=0
На самом деле я бы хотел, чтобы первый элемент макета был равен нулю.
Мой вопрос: есть ли способ сделать это лучше?
Спасибо