2017-02-11 7 views
1

Hier mein data.frame:auf einer zweiten Säule basiert

df = read.table(text = 'Day ID Event 
         100 1  1 
         100 1  1 
         99 1  1 
         97 1  1 
         87 2  1 
         86 2  1 
         85 2  1 
         965 1  2 
         964 1  2 
         960 1  2 
         959 1  2 
         709 2  2 
         708 2  2 
         12 3  2 
          9 3  2', header = TRUE) 

Was Ich mag würde zu tun ist, um eine neue Spalte zu schaffen, die unter Berücksichtigung der ID und Event diejenigen, weisen für jede Beobachtung eine Zahl in abnehmender Reihenfolge basierend auf den relativen Einsen.

Meine gewünschte Ausgabe wäre:

     Day ID Event Count 

         100 1  1  4 
         100 1  1  4 
         99 1  1  3 
         97 1  1  1 

         87 2  1  3 
         86 2  1  2 
         85 2  1  1 

         965 1  2  7  
         964 1  2  6 
         960 1  2  2 
         959 1  2  1 

         709 2  2  2 
         708 2  2  1 

         12 3  2  4 
          9 3  2  1 

Z.B. Wenn Sie sich den ersten "Block" oben ansehen: Tag 97 = 1, Tag 98 = 2, Tag 99 = 3 und Tag 100 = 4. Tag 98 fehlt uns, aber wir müssen ihn trotzdem in die Zählung einbeziehen.

Ich habe versucht, die folgenden aber die Ausgabe ist nicht das, was ich brauche:

df $ Count < - ave (df $ Tag, df $ Ereignis, df $ ID, FUN = seq_along)

Danke für Ihre Hilfe

+0

versuchen Es ist nicht klar, wie Sie thos bekam e Zahlen. Vielleicht brauchst du '? Rank' – akrun

+0

Hallo akrun, ich habe gerade meine Frage aktualisiert .. – aaaaa

Antwort

0

Wir

library(dplyr) 
df %>% 
    group_by(ID, Event) %>% 
    mutate(Count = 1+(Day-Day[n()])) 
+1

danke dir – aaaaa

Verwandte Themen