私はRにかなり慣れていませんが、現在の問題よりもはるかに大きな課題に取り組んできたため、特にイライラしています。フォーラムを検索し、関連するトピックをいくつか見つけましたが、この状況にうまく対処できるものはありませんでした。
14 個の変数の 184 個の観測データを含むデータセットがあります。
> head(diving)
tagID ddmmyy Hour.GMT. Hour.Local. X0 X3 X10 X20 X50 X100 X150 X200 X300 X400
1 122097 250912 0 9 0.0 0.0 0.3 12.0 15.3 59.6 12.8 0.0 0 0
2 122097 260912 0 9 0.0 2.4 6.9 5.5 13.7 66.5 5.0 0.0 0 0
3 122097 260912 6 15 0.0 1.9 3.6 4.1 12.7 39.3 34.6 3.8 0 0
4 122097 260912 12 21 0.0 0.2 5.5 8.0 18.1 61.4 6.7 0.0 0 0
5 122097 280912 6 15 2.4 9.3 6.0 3.4 7.6 21.1 50.3 0.0 0 0
6 122097 290912 18 3 0.0 0.2 1.6 6.4 41.4 50.4 0.0 0.0 0 0
これはタグ付けデータで、各日付には 1 つ以上の 6 時間のタイム ビンがあります (送信の中断により、連続したデータセットではありません)。各 6 時間ビンでは、動物が潜った深度が % で 10 ビンに分類されます。したがって、X0 = 0 ~ 3 分で費やされた時間の割合、X3 = 3 ~ 10 分で費やされた時間の割合、などとなります。
手始めにやりたいことは、各深度ビンで費やされた平均時間を取り、それをプロットすることです。まず、次のことを行いました。
avg0<-mean(diving$X0)
avg3<-mean(diving$X3)
avg10<-mean(diving$X10)
avg20<-mean(diving$X20)
avg50<-mean(diving$X50)
avg100<-mean(diving$X100)
avg150<-mean(diving$X150)
avg200<-mean(diving$X200)
avg300<-mean(diving$X300)
avg400<-mean(diving$X400)
この時点で、結果の平均をプロットする方法がわからなかったので、それらをリストにしました。
divingmeans<-list(avg0, avg3, avg10, avg20, avg50, avg100, avg150, avg200, avg300, avg400)
boxplot(divingmeans) は、X 軸に 1:10、Y 軸に % 0-30 を提供する、一種の作品です。ただし、ランク 1:10 だけでなく、カテゴリ ビン名 (avg3 または X3 など) を提供する x 軸と同様に、ヒストグラムを好むでしょう。
hist() と plot() は以下を提供します。
> plot(divingmeans)
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' is a list, but does not have components 'x' and 'y'
> hist(divingmeans)
Error in hist.default(divingmeans) : 'x' must be numeric
私も試しました:
> df<-as.data.frame(divingmeans)
> df
X3.33097826086957 X3.29945652173913 X8.85760869565217 X17.6461956521739 X30.2614130434783
1 3.330978 3.299457 8.857609 17.6462 30.26141
X29.3565217391304 X6.44510869565217 X0.664130434782609 X0.135869565217391 X0.0016304347826087
1 29.35652 6.445109 0.6641304 0.1358696 0.001630435
と
> df <- data.frame(matrix(unlist(divingmeans), nrow=10, byrow=T))
> df
matrix.unlist.divingmeans...nrow...10..byrow...T.
1 3.330978261
2 3.299456522
3 8.857608696
4 17.646195652
5 30.261413043
6 29.356521739
7 6.445108696
8 0.664130435
9 0.135869565
10 0.001630435
どちらも私が探している種類のテーブルを提供しません。
これを適切なテーブルに変換するための本当に基本的な解決策があるに違いないことは知っていますが、一生それを理解することはできません。平均して、各ダイビングビンで費やされた時間の割合を示す基本的なヒストグラムを作成できるようにしたいと考えています。この目的に最適なデータ形式は、col1=bin (カテゴリ; avg50 など) と col2=% (数値; そのカテゴリで費やされた時間の平均 %) の 2 つの列を持つテーブルです。
また、データが異なるタイミング ビンに分割されていることにも気付くでしょう。最終的には、データを時間帯ごとに分けて、たとえば、平均潜水深度が昼と夜の間で変化するかどうかなどを確認できるようにしたいと考えています。この最初のコードが完成したら、たとえばX0[which(Hour.GMT.=="6")]
. これに関するヒントも大歓迎です。