2016-06-27 3 views
0

, например, у меня есть этот фрейм данных Имени данныеИспользования Для с временными рядами в R

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 

Сначала я сделать временные ряды по дням, чтобы создать новый фрейм данных

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 

Теперь я хочу положить в каждую дату среднее переменной а

A <- DATA$A 

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

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

Моя проблема начать здесь, когда я хочу сделать вектор печатной стоимости.

Идея заключается в том добавить вектор в данные_2

+0

Вы можете попробовать tapply: 'tapply (DATA, DATA $ Date, mean) ' – Dave2e

ответ

1

Вы можете использовать этот код:

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

Это выход:

> 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 
Смежные вопросы