У меня есть образец кадра данных с повторяющимися записями в первом столбце, указанном ниже:
df <- data.frame(ID=c(rep(101,3),rep(102,2),103,rep(104,3)),Type=c(2,1,1,1,2,1,3,1,2),sex=c(0,0,0,1,1,1,0,0,0))
df
ID Type sex
1 101 2 0
2 101 1 0
3 101 1 0
4 102 1 1
5 102 2 1
6 103 1 1
7 104 3 0
8 104 1 0
9 104 2 0
Вопрос: Для каждой переменной 'ID' я хочу, чтобы строки начинались с того места, где первое вхождение переменной 'Type' равно 1 (то есть Type = 1).
Я знаю, для каждого идентификатора, позиция, удовлетворяющая условию Тип = 1 , используя следующий код:
aggregate(df$Type,list(ID=df$ID),function(x) match(1,x))
ID x
1 101 2
2 102 1
3 103 1
4 104 2
, но я не смог решить проблему ,
Требуемый вывод: Вывод должен выглядеть следующим образом:
df.result <- data.frame(ID=c(101,101,102,102,103,104,104),Type=c(1,1,1,2,1,1,2),sex=c(0,0,1,1,1,0,0))
df.result
ID Type sex
1 101 1 0
2 101 1 0
3 102 1 1
4 102 2 1
5 103 1 1
6 104 1 0
7 104 2 0
Спасибо!