2016-05-10 1 views
2

ちょっとした背景:これは、研究中にBOE 1と呼ばれるマウスを12日間のコーセで平均距離を計算するためのコードです。毎日の実験の繰り返し。各データセットで試験した19匹のマウスがある。可能であればこのコードをもっとエレガントに短くしようとする - R

問題:各マウスの平均移動距離を計算し、それをテーブルに配置したいと考えています。私はうまくいきましたが、以下のコードを短く、反復しないようにする方法があれば、私は興味がありました。

オプションを試してみました:これらの

mean(BOE.1Data$Distance.cm[BOE.1Data$Day == c(1,2, ect)] 
mean(BOE.1Data$Distance.cm[BOE.1Data$Day == c(1|2| ect)] 
mean(BOE.1Data$Distance.cm[BOE.1Data$Day == c(1&2& ect)] 

なし私のために働いていません。

コード:

Distance.1 = c(mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 1]), 
       mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 2]), 
       mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 3]), 
       mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 4]), 
       mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 5]), 
       mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 6]), 
       mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 7]), 
       mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 8]), 
       mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 9]), 
       mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 10]), 
       mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 11]), 
       mean(BOE.1Data$Distance.cm[BOE.1Data$Day == 12])) 
+0

ようこそStackOverflow。 [MCVE] –

+0

を入力してください。これは、(BOE.1Data、tapply(Distance.cm、Day、mean))を使用したいと思っていますが、サンプル入力や出力がない場合は、確かに言いにくいようです。 – MrFlick

答えて

3

あなたはこのby()を使用して行うことができます。data.table

by(BOE.1Data$Distance.cm, BOE.1Data$Day, mean) 
+0

これは魅力的に機能しました!どうもありがとうございます! – albeit2

0
n <- numeric(length(12)) 
for (i in 1:12) { 
    n[i] <- mean(BOE.1Data$Distance.cm[BOE.1Data$Day == i]) 
} 
+0

1. R 2で 'for'ループを避けるべきです。あなたのコードは明らかにあなたが思ったように動作しません。 –

+1

私は、あなたがコードを短くするためにループのために使うべきだと教えられました。私はちょうど助けになり、私が問題について行く方法を提案していますが、私は半期的なので、コードをテストするデータがなければ、私のコードの精度を保証することはできません。 –

2

一つのアプローチを。日」によってグループ化された、(setDT(BOE.1Data) ')data.table' に 'data.frame' を変換し、我々は、dplyrmagrittrを使用して 'Distance.cm'

library(data.table) 
setDT(BOE.1Data)[, .(MeanDist = mean(Distance.cm)) , by = Day] 
0

別のアプローチのmeanを取得するためにarrange()を使用それらが整然としたものであることを確認してください。

Distance.1 <- BOE.1Data %>% group_by(Day) %>% 
     mutate(mean_dist=mean(Distance.cm)) %>% 
     arrange(Day) %$% mean_dist 
関連する問題