Пустышка для первого нового элемента в серии

Предположим, у меня есть переменная, которая сохраняется в течение нескольких периодов. Как то количество лет, которое у меня есть 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

На самом деле я бы как будто первый элемент манекена равен нулю.

Мой вопрос: есть ли способ сделать это лучше?

Спасибо

5
задан aatrujillob 22 February 2017 в 12:50
поделиться