Ciao, вот мой реплицирующий пример.
a=c(1,2,3,4,5,6)
a1=c(15,17,17,16,14,15)
a2=c(0,0,1,1,1,0)
b=c(1,0,NA,NA,0,NA)
c=c(2010,2010,2010,2010,2010,2010)
d=c(1,1,0,1,0,NA)
e=c(2012,2012,2012,2012,2012,2012)
f=c(1,0,0,0,0,NA)
g=c(2014,2014,2014,2014,2014,2014)
h=c(1,1,0,1,0,NA)
i=c(2010,2012,2014,2012,2014,2014)
mydata = data.frame(a,a1,a2,b,c,d,e,f,g,h,i)
names(mydata) = c("id","age","gender","drop1","year1","drop2","year2","drop3","year3","drop4","year4")
mydata2 <- reshape(mydata, direction = "long", varying = list(c("year1","year2","year3","year4"), c("drop1","drop2","drop3","drop4")),v.names = c("year", "drop"), idvar = "X", timevar = "Year", times = c(1:4))
x1 = mydata2 %>%
group_by(id) %>%
slice(which(drop==1)[1])
x2 = mydata2 %>%
group_by(id) %>%
slice(which(drop==0)[1])
У меня есть данные "mydata2", которые такие большие, что у каждого идентификатора много строк.
Я хочу сделать новый набор данных "x" таким, чтобы у каждого идентификатора была одна строка, основанная на том, удаляются они или нет.Первое из drop1 drop2 drop3 drop4, равное 1, я хочу взять год этого и поместить его в переменную dropYEAR.Если ни одно из drop1 drop2 drop3 drop4 не равно 1, я хочу поместить последнюю точку данных в year1 year2 year3 year4 в переменную dropYEAR.
В конечном итоге каждый идентификатор должен иметь 1 строку, и я хочу создать 2 новых столбца:didDROP равно 1, если идентификатор когда-либо упал или 0, если идентификатор никогда не удалялся.dropYEAR равен году падения, если didDROP равно 1 или равен последнему отчетному году1 год2 год3 год4, если идентификатор никогда не падал.Я пытаюсь сделать это в dplyr, но это дает часть того, что я хочу, только потому, что он избавляется от значений ID, равных 0.
Это желаемый вывод, спасибо @Wimpel