2017-06-01 15 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ループを使用してさまざまな観測値に対して最大、最小、平均および中央値を保存しようとしていますが、最大値、各観測における平均、中央値および中央値。ここでテーブル内のループ内の最大値、最小値の平均値を保存する

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

ところで、あなたのアプローチには何も問題はありません。ループしているi値の4列(最大、最小、平均、中央値)とi行の空のdata.frameを作成する必要があるかもしれません。あなたの現在のコードは、ループの最後のi値に基づいてオブジェクトsを与えるだけで、以前のi値からdata.frameを上書きします。 –

+0

私は最後の値だけでなく、すべての値を取得していますが、問題は、例えば、[1:240]の値を入力しているときにmax、min関数で 'i'を読むことができないということです。 ]正しい答えを与えるが、[i、i + 239]とは一致しない。 –

関連する問題