[解決済み] Rでのインデックスマッチ
2022-02-07 22:58:55
質問内容
Rでインデックスマッチを再現する方法を検索したところ、小さいデータセットには有効なソリューションが見つかりましたが、(a)5年間の複数のスワップ金利の日次履歴と(b)20万以上のレコードを持つ個々のローンの詳細の2つのデータフレームではうまくいきませんでした。 私はExcelでindex(match)を使って結果を操作しましたが、Rでそれを行う効率的な方法を学びたかったのです。
簡単に言うと、こんな感じです。
RateData <- data.frame(Date = c("2018-01-01","2018-01-05","2018-01-08","2018-01-17"),
Threeyr = c(1.25,1.27,1.29, 1.30),
Fiveyr = c(2.3,2.31,2.34, 2.4),
Tenyr = c(2.8,2.89,2.75, 2.6),
PRIME = c(4.0,4,4, 4.25))
LoanData <- data.frame(OriginationDate = c("2018-01-01","2018-01-01","2018-01-01","2018-01-05",
"2018-01-08","2018-01-08","2018-01-17"),
LNTYPE = c(83,101,115,83,83,105,115),
PriceIndex = c('Threeyr','Fiveyr','PRIME','Threeyr','Threeyr','Fiveyr','PRIME'))
データをマッチング/ジョインして、適切なインデックスから特定のオリジネーション日のレートだけをLoanDataの新しいカラムに入力したいのです。 他の投稿にあった spread() / gather() を使った提案を再度試してみましたが、この小さな例ではうまくいきましたが、私のデータセット全体ではメモリを使いすぎました。
下記を試してみましたが、行列のような結果になってしまいました。
LoanData$Rate <- RateData[match(LoanData$OriginationDate,RateData$Date),
match(LoanData$PriceIndex,colnames(RateData))]
どうすれば、期待通りの結果が得られるのでしょうか?
LoanData1 <- data.frame(OriginationDate = c("2018-01-01","2018-01-01","2018-01-01","2018-01-05",
"2018-01-08","2018-01-08","2018-01-17"),
LNTYPE = c(83,101,115,83,83,105,115),
PriceIndex = c('Threeyr','Fiveyr','PRIME','Threeyr','Threeyr','Fiveyr','PRIME'),
Rate = c(1.25,2.30,4,1.27,1.29,2.34,4.25))
どんなことでもご相談ください。
解決方法は?
ただ、行列を使って多次元で添え字をつけないと、組み合わせの積になってしまうんだ。正しいのは
LoanData$Rate <- RateData[cbind(
match(LoanData$OriginationDate, RateData$Date),
match(LoanData$PriceIndex, colnames(RateData))
)]
関連
-
[解決済み】エラー:私のコードで予期しないシンボル/入力/文字列定数/数値定数/SPECIALが発生した
-
[解決済み】エラー。Rの次元数が正しくない
-
[解決済み】apply()とadply()の出力が異なる件)
-
[解決済み】エラー。Rの'break'の数が無効
-
[解決済み】R ggplot2 で scale_x_discrete を使用する。
-
[解決済み】ロジスティック回帰 - eval(family$initialize) : y 値は 0 <= y <= 1 である必要があります。
-
[解決済み】各グループの上位3要素を計算する際に「数値型、論理型、複合型でのみ可能な演算」を回避する方法
-
[解決済み】forループを実行すると「要因のレベルセットが異なる」というエラーが発生する
-
[解決済み] ベクトル中のある要素のインデックスを求めるR関数はありますか?
-
[解決済み] FUN内のlapplyインデックス名へのアクセス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】R:関数に有限な'ylim'値が必要
-
[解決済み] 変数の型(リスト)が無効です
-
[解決済み】ベースグラフィックスでプロットエリアの外側に凡例をプロットする?
-
[解決済み】Rで立方根と対数変換をする
-
[解決済み】 boxplotに色を追加する - "離散的なスケールに連続的な値が供給される "エラー
-
[解決済み] ヒートマップ作成時のエラー - 外部関数呼び出しでNA/NaN/Inf (arg 11)
-
[解決済み】 if/while (条件) {: TRUE/FALSEが必要な場所に値がない場合のエラー
-
[解決済み】エラー - replacement has [x] rows, data has [y].
-
[解決済み】Rでのデータ操作。'X'はアトミックでなければならない
-
[解決済み] na.fail.defaultのエラー:オブジェクトの値が見つからない - しかし、値が見つからないことはありません。