![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
netCDFのデータをR言語を用いて取り込み、加工したいのですが、なかなか勝手がつかめません。
最終的に、経度x(0~360)、緯度y(0~180)、特定のパラメータzで、[x,y,z]の形の行列データにしたいのですが、難儀しています。
現状私が入手しているのは以下の通りです。
lon[0:1440] --0.25度刻みの経度のデータ
lat[0:720] --0.25度刻みの緯度データ
Z[0:1440, 0:720] --lon,lat毎のパラメータデータ
Z行列を4行4列に分解し、16要素で平均したうえで、緯度経度1度ごとの[x,y,z]データに落とし込めればと思うのですが、どんな方法が良いのでしょうか。
ifやforをたくさん使いすぎると、計算に非常に時間がかかる印象があるので、なるべくシンプルな方法を教えていただければ嬉しいです。
また、こうした用途にお勧めのパッケージがあれば教えていただけないでしょうか。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
まずRのベクトル・行列のインデックスは1始まりなので
lon[1:1441] <- (1:1441-1)/4
lat[1:721] <- (1:721-1)/4
Z[1:1441,1:721]ですかね。
あと経度だと0==360で、緯度が 0と180のときは全部の経度が同じかと思うけど、そういうことを気にせず長方形と考えて良いのかな。
あと4つずつに分けるとして端点での取り扱いはどうなるかな。360だけ単独?
この辺の仕様がよく分からないので質問です。
とりあえず長方形モデルで、緯度経度は四捨五入と考えます。
x <- 0:360
y <- 0:180
xt <- as.vector(t(cbind(x,x,x,x)))[3:1443]
yt <- as.vector(t(cbind(y,y,y,y)))[3:723]
z1 <- apply(Z, 1, function(l){tapply(l,xt,mean)})
z2 <- t(apply(z1, 2, function(r){tapply(r,yt,mean}))
これでz2が1度ごとに集約した行列になっていると思います。
なお動作確認してないので、間違いがあればごめんなさい。
回答ありがとうございます。
大変勉強になり、Rでの考え方が少しわかった気がしました。
終始行列のままで考えていかないといけないのですね。
補足)よく見たら[1:1440]と[1:360]でした。
また、緯度は南北の端はデータが入っていないようなので、長方形とみなして大丈夫です。
z1とz2の行のところのxtとytは逆かなと思います。行ー列の関係とx-yの関係は感覚的に逆転しているんですね。
z2でなぜ転置行列があるのだろうと思っていたのですが、apply,tapplyした結果の行と列が逆転してしまうのですね。(機構はよくわかってないけれど)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- その他(プログラミング・Web制作) 大学のゼミのレポートがムカつきます。 R言語というデータ分析に特化したプログラム言語を用いた授業の課 1 2023/06/29 00:50
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- その他(開発・運用・管理) おんどとりWebStorage APIから温度情報を取得し表示したい 2 2023/08/03 09:53
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- 統計学 2019年度の毎日朝6時に測定された東京都霞が関における窒素酸化物(Nox)濃度のモニタリングデータ 4 2023/04/24 16:45
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
VBA 空白セルを削除ではない方...
-
エクセルで2つの時系列のデー...
-
パースとはなんですか?
-
バーコードリーダーの読込デー...
-
[エクセル]データの個数が2番目...
-
この行は既に別のテーブルに属...
-
Accessで該当データにフラグを...
-
【エクセル】測定時間がバラバ...
-
ActiveReportについて
-
C# ソケット通信でデータ受信時...
-
send-recvで複数データの送受信
-
エクセルで1次近似をもとめたい
-
CString型の文字列連結について
-
ハミング窓関数とFFT(高速フー...
-
VB6でCSVの取込をする
-
S9タイプからXタイプにデータ...
-
SDカード メーカーや値段によ...
-
AccessからExcelを編集
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
この行は既に別のテーブルに属...
-
VBAを使ってOutlookメール本文...
-
VBA 空白セルを削除ではない方...
-
S9タイプからXタイプにデータ...
-
多量のSUMIF式を軽くしたい
-
Accessで該当データにフラグを...
-
[C言語] コメント文字列を無視...
-
[エクセル]データの個数が2番目...
-
エクセルで2つの時系列のデー...
-
特定のデータの抽出方法を教え...
-
外部データの更新がうまくでき...
-
ActiveReportについて
-
CString型の文字列連結について
-
ユーザーフォームのテキストボ...
-
カンマからスラッシュに
-
シーケンサにパソコンからアク...
おすすめ情報