2017-01-30 4 views
0

Zunächst einmal: Sorry, wenn diese Frage klingt dumm ... oder ich habe es falsch formatiert, ich bin neu in diesem. I haben folgende Daten:Zählen Beobachtungen für eine gegebene ID nach Datum in R

Value  Date IDnum 
1 230 2010-02-01  1 
2 254 2011-07-07  2 
3 300 2011-12-14  1 
4 700 2011-01-23  3 
5 150 2010-08-31  3 
6 100 2010-05-06  1 

Hergestellt mit dem folgenden Code:

Value <- c(230, 254, 300, 700, 150, 100) 
Date <- as.Date(c("01/02/2010", "07/07/2011", "14/12/2011", "23/01/2011", "31/08/2010", "06/05/2010") 
      , "%d/%m/%Y") 
IDnum <- c(001, 002, 001, 003, 003, 001) 
MyData <- data.frame(Value, Date, IDnum) 

I R müssen eine Spalte erzeugen, die zählt und zählt jede Zeile je nachdem, ob seine ersten, zweiten usw. Beobachtungs für die angegebene IDnum, nach Datum. So geben Sie mir etwas Ähnliches:

Value  Date IDnum Obs 
1 230 2010-02-01  1 1 
2 254 2011-07-07  2 1 
3 300 2011-12-14  1 3 
4 700 2011-01-23  3 2 
5 150 2010-08-31  3 1 
6 100 2010-05-06  1 2 

Dank

+0

diese Frage wird ein Duplikat sicher sein! du hast nicht genug gesucht @Andrew –

+4

@ joel.wilson Warum hast du es nicht als Duplikat markiert? – Jaap

Antwort

-1
library(data.table) 
df$Date <- as.Date(df$Date, format = "%Y-%m-%d") 
setDT(df)[, Obs := order(Date),by = .(IDnum)] 

library(dplyr) 
df %>% group_by(IDnum) %>% mutate(Obs = order(Date)) 

# Value  Date IDnum Obs 
#1: 230 2010-02-01  1 1 
#2: 254 2011-07-07  2 1 
#3: 300 2011-12-14  1 3 
#4: 700 2011-01-23  3 2 
#5: 150 2010-08-31  3 1 
#6: 100 2010-05-06  1 2 
+0

an die Person, die downvoted, ich glaube nicht, dass Sie downvoted, weil es eine doppelte Antwort war, weil Sie selbst beantworten doppelte Fragen täglich! –

Verwandte Themen