2016-06-27 17 views
0

zum Beispiel ich diesen DatenrahmenVerwendung für Zeitreihen in R

Namen DATA habe
Date  A 
22/02/2016 2 
22/02/2016 6 
23/02/2016 7 
23/02/2016 9 
24/02/2016 4 
24/02/2016 8 

Erste ich mache eine Zeitreihe von Tagen einen neuen Datenrahmen Jetzt erstellen

require(zoo) 
B <- as.POSIXct(strptime(DATA$Date, "%d/%m/%Y")) 
Time_series <- seq.POSIXt(from=B[1],to=B[6],by="day") 
DATA_2 <- data.frame(Time_series) 

Time_series  
22/02/2016 
23/02/2016 
24/02/2016 

ich will in jedem Zeitpunkt den Mittelwert der variablen beginnt A hier

A <- DATA$A 

for (i in Time_series){ 
print(mean(A[which(B == i)])) 
} 

[1] 4 
[1] 8 
[1] 6 

Mein Problem zu stellen, wenn ich einen Vektor des gedruckten Wertes machen will.

Die Idee ist, fügen Sie den Vektor zu Data_2

+0

Sie könnten versuchen, tapply: 'tapply (DATA, DATA $ Datum, Mittelwert) ' – Dave2e

Antwort

1

Sie diesen Code verwenden können:

DATA_2$MEAN <-sapply(Time_series, function(x){ 
    mean(A[which(B == x)]) 
}) 

Dies ist die Ausgabe:

> DATA_2 
    Time_series MEAN 
1 2016-02-22 4 
2 2016-02-23 8 
3 2016-02-24 6 
1
require(zoo) 
DATA <- data.frame(Date = seq(Sys.Date(),Sys.Date()+9,by=1), A=rnorm(10)) 

B <- as.POSIXct(strptime(DATA$Date, "%Y-%m-%d")) 
Time_series <- seq.POSIXt(from=B[1],to=B[10],by="day") 
DATA_2 <- data.frame(Time_series) 

A <- aggregate(DATA,by=list(DATA$Date), mean) 

DATA_2 <- cbind(DATA_2, A$A) 
colnames(DATA_2) <- c("Date", "Mean of Response for this Date") 
DATA_2 

     Date Mean of Response for this Date 
1 2016-06-27     0.537861522 
2 2016-06-28     -0.872163819 
3 2016-06-29     -0.538401384 
4 2016-06-30     1.162449246 
5 2016-07-01     -1.490553854 
6 2016-07-02     0.220161925 
7 2016-07-03     0.057615735 
8 2016-07-04     -0.955184268 
9 2016-07-05     0.007144786 
10 2016-07-06     -0.157812297