Предположим, у меня есть переменная, которая сохраняется в течение нескольких периодов. Как то количество лет, которое у меня есть Ipod. Итак, с 2001 по 2004 год у меня был Ipod 1-го поколения, а в 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
На самом деле я бы как будто первый элемент манекена равен нулю.
Мой вопрос: есть ли способ сделать это лучше?
Спасибо