[解決済み] data.tableにby引数で結合する
質問
私は2つのdata.tableを持っています
dx
と
dy
dx <- data.table(a = c(1,1,1,1,2,2), b = 3:8)
dy <- data.table(a = c(1,1,2), c = 7:9)
参加したい
dy
の各行に
dx
そして、以下のような出力が期待されます。
data.table(plyr::ddply(dx, c("a", "b"), function(d) merge(d, dy, by = "a")))
a b c
1: 1 3 7
2: 1 3 8
3: 1 4 7
4: 1 4 8
5: 1 5 7
6: 1 5 8
7: 1 6 7
8: 1 6 8
9: 2 7 9
10: 2 8 9
しかし、このままでは、(1)の中の操作だけで出力することができません。
[]
の
data.table
または
merge
? 私は疲れている
merge(dx, dy, by = "a", all = TRUE)
vecseq(f__, len__, if (allow.cartesian || notjoin || !anyDuplicated(f__, .)) でエラー。 結合結果は10行になります。9行以上 = nrow(x)+nrow(i). iのキー値が重複していないか、それぞれがxの同じグループに何度も何度もジョインしていないかチェックします。もしそれがOKなら、by=.EACHIで各グループに対してjを実行し、大きな割り当てを回避する。このままでよいのなら、allow.cartesian=TRUEで再実行します。そうでない場合は、FAQ、Wiki、Stack Overflow、datatable-helpでこのエラーメッセージを検索し、アドバイスをもらってください。
dy[dx,on="a"]
vecseq(f__, len__, if (allow.cartesian || notjoin || !anyDuplicated(f__, .)) でエラー。 結合結果は10行になります。9行以上 = nrow(x)+nrow(i). iのキー値が重複していないか、それぞれがxの同じグループに何度も何度もジョインしていないかチェックします。もしそれがOKなら、by=.EACHIで各グループに対してjを実行し、大きな割り当てを回避する。このままでよいのなら、allow.cartesian=TRUEで再実行します。そうでない場合は、FAQ、Wiki、Stack Overflow、datatable-helpでこのエラーメッセージを検索し、アドバイスをもらってください。
dx[, merge(dy, by = "a"), by = c("a", "b")]
エラー in is.data.table(y) : 引数 "y" is missing, with no default
dx[, merge(.SD, dy, by = "a"), by = c("a", "b")]
merge.data.table(.SD, dy, by = "a") でエラーが発生しました。
にリストされている要素
by
は、x と y の有効な列名でなければなりません。
実際にどうすればいいのでしょうか?
ありがとうございます。
解決方法は?
お客様の要件を正しく理解しているのであれば、使用できる直接のマージ・オプションがあります。
dx <- data.table(a = c(1,1,2,2), b = 3:6)
dy <- data.table(a = c(1,1,2), c = 7:9)
merge(x = dx, y = dy, by = "a", all = TRUE)
これで、おっしゃるとおりの出力が得られます。 データフレームを結合(マージ)する方法(内側、外側、左、右)?
あなたの疑問が解ければいいのですが、そうでなければ申し訳ありません。
関連
-
[解決済み】R:関数に有限な'ylim'値が必要
-
[解決済み】'builtin'型のオブジェクトはsubsetableではない【重複
-
[解決済み】library(ggplot2)でエラー:'ggplot2'というパッケージは存在しません。
-
[解決済み】lis[[i]]のエラー:1つ未満の要素を選択しようとした場合
-
[解決済み】GLM解析での警告
-
[解決済み】RでAIC中に行数が変化するのはなぜですか?そうならないようにするにはどうしたらいいですか?
-
[解決済み】Rはプロットするが、アブラインを描画しない
-
[解決済み】エラー - replacement has [x] rows, data has [y].
-
[解決済み】起動時にパーをデフォルト値にリセットする方法
-
[解決済み】data.table vs dplyr:一方がうまくできない、またはうまくできないことを行うことができますか?
最新
-
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: 複数行の ggplot2 コマンドで「単項演算子エラー」が発生する。
-
[解決済み】ベースグラフィックスでプロットエリアの外側に凡例をプロットする?
-
[解決済み】rbind エラー。"名前が以前の名前と一致しない"
-
[解決済み】apply()とadply()の出力が異なる件)
-
[解決済み】x[[i]]でのエラー:レベル2で再帰的インデックス作成に失敗した
-
[解決済み】データのマージ - fix.by(by.x, x)のエラー)
-
[解決済み】RでAIC中に行数が変化するのはなぜですか?そうならないようにするにはどうしたらいいですか?
-
[解決済み】二項演算子への非数値引数【非公開
-
[解決済み] データフレームを結合(マージ)する方法(内側、外側、左側、右側)