私は2つのデータセットを持っていますが、私が欲しいのは、「キー以外の変数の外部結合」と呼ばれることがあります。キー以外の変数のすべての「出現」をマージする
oc oc2 state_id r_state r_country
A011 A01 1808 1.00 0.62
A012 A01 1808 NA 0.14
A013 A01 1808 NA 0.24
A011 A01 1810 0.50 0.62
A012 A01 1810 0.50 0.14
A013 A01 1810 NA 0.24
A011 A01 1814 0.33 0.62
A012 A01 1814 0.33 0.62
A013 A01 1814 0.33 0.24
注意をどのように行番号:ここ
は、データセットは、
データセットの出力は、次のされて、私が欲しいものを1
oc oc2 state_id r_state
A011 A01 1808 1.00
A011 A01 1810 0.50
A012 A01 1810 0.50
A011 A01 1814 0.33
A012 A01 1814 0.33
A013 A01 1814 0.33
データセット2
oc r_country
A011 0.62
A012 0.14
A013 0.24
です2,3、および6が「人工的に」導入された。私の質問はRでこれを行う方法です。oc
でマージすると、merge
関数はこれらの行を作成しません。 oc2
でマージすると、不要な余分な行が作成されます。 oc2
は、ちょうどoc
の上位レベルのコーディングであることに注意してください。以下は、上記のデータセットをdata.tablesに入れるためのコードです。これらはサンプルデータセットであり、実際のデータはおよそ50個の異なるoc2
を含み、各oc2
は1〜9個のoc
を含むことができます。また、47の異なる州があります。
DT1 = data.table(oc = c('A011','A011','A012','A011','A012','A013'),
oc2 = rep('A01',6),
state_id = c(1808,1810,1810,1814,1814,1814),
r_state = c(1, 0.5,0.5,0.33,0.33,0.33)
)
DT2 = data.table(oc = c('A011','A012','A013'),
r_country = c(0.62, 0.14, 0.24)
)
私はdata.table
を使用していますが、ベースdata.frame
ソリューションも行います。
おかげで、私は秒単位で考えていた "プロセス" を実施しています。私は 'CJ'と' on'について全く知らなかった。私はそれらについてどこで読むのですか? –
また、 'on =。(oc、state_id)'は私にエラーを投げます。 'on = c( 'oc'、 'state_id')'を使う必要がありました。古いバージョンの 'データがあるかもしれません。テーブル ' –
@ GauravSinghal私はバージョン* 1.10.4-3を使用しています*;どのバージョンを使用していますか? – Jaap