2017-06-01 46 views
-3
s<-NULL 
for(i in seq(from=1,to=3360,by=240)){ 
    print(i) 
    s<- rbind(s, data.table(
    max(mydata$duration_in_traffic[i:i+239]), 
    min(mydata$duration_in_traffic[i:i+239]), 
    mean(mydata$duration_in_traffic[i=i:i+239]), 
    median(mydata$duration_in_traffic[i:i+239]))) 
} 

我試圖通過for循環保存表中的最大值,最小值,平均值和中值,但它將相同的值返回到最大值,min,平均值和中位數。通過for循環在表中節省最大,最小平均中值

enter image description here

+0

您需要提高格式化您的問題,並花費更多時間。 –

回答

0

這裏是你如何能使用虹膜數據dplyr包作爲一個例子做到這一點:

iris$gp <- findInterval(1:nrow(iris), seq(1, nrow(iris), 40)) # create a grouping variable for every 40 observations of iris data 

iris %>% 
    group_by(gp) %>% 
    summarise_at(vars(Petal.Length), funs(max, min, mean, median)) 

# # A tibble: 4 × 5 
#  gp max min  mean median 
# <int> <dbl> <dbl> <dbl> <dbl> 
# 1  1 1.9 1.0 1.460000 1.50 
# 2  2 5.0 1.3 3.617500 4.15 
# 3  3 6.9 3.0 4.902500 4.85 
# 4  4 6.7 4.8 5.483333 5.55 

你的情況,這應該工作:

s$gp <- findInterval(1:nrow(iris), seq(1, 3360, 240)) 

s %>% 
    group_by(gp) %>% 
    summarise_at(vars(duration_in_traffic), funs(max, min, mean, median)) 
+0

感謝Adam Quek –

+0

順便提一下,您的方法沒有任何問題。這只是您可能需要創建一個空數據框,其中包含4列(用於最大值,最小值,平均值和中位數)以及i行代表您正在循環的i值。您當前的代碼只會根據循環的最後一個i值爲您提供對象,它將覆蓋以前i值中的data.frame。 –

+0

我得到所有的值,而不僅僅是我的最後一個值,但問題是,它是無法讀取'我'在最大值,最小值函數,當我把例如值[1:240 ]它給出正確的答案,但不與[我,我+ 239]。 –

相關問題