0

他の 2 つのデータ フレームのデータを使用してデータ フレームを作成しようとしています。基本的に私はこれを持っています:

structure(list(V1 = c(1L, 2L, 3L, 5L, 6L, 7L, 8L, 10L, 11L, 12L
), V2 = c(0.916983532, 1.032711089, 0.836822161, 1.006113655, 
1.008669791, 1.036207351, 1.097991705, 1.002907627, 1.108148337, 
1.092072261)), .Names = c("V1", "V2"), class = "data.frame", row.names = c(NA, 
-10L))

この:

structure(list(V1 = c(1L, 2L, 4L, 5L, 6L, 8L, 9L, 10L, 11L, 12L
), V2 = c(0.965881642, 1.061808325, 1.270001821, 1.018682611, 
1.18481589, 1.073037748, 1.039466199, 0.848856926, 0.839672387, 
0.802535575)), .Names = c("V1", "V2"), class = "data.frame", row.names = c(NA, 
-10L))

そして、次の出力を取得したい:

structure(list(V1 = 1:12, V2 = c(0.9169835, 1.0327111, 0.8368222, 
0, 1.0061137, 1.0086698, 1.0362074, 1.0979917, 0, 1.0029076, 
1.1081483, 1.0920723), V3 = c(0.965881642, 1.061808325, 0, 1.270001821, 
1.018682611, 1.18481589, 0, 1.073037748, 1.039466199, 0.848856926, 
0.839672387, 0.802535575)), .Names = c("V1", "V2", "V3"), class = "data.frame", row.names = c(NA, 
-12L))

したがって、R に実行させたいのは、V1 の値が一致する場合、両方のデータ フレームの V2 からの値を新しいデータ フレームに入れることです。したがって、それらはさらに分析するために同じ行に表示されます。問題は、V1 が各データ フレームで同じシーケンスをたどらないことです。最初のデータ フレームの V1 に値があっても 2 番目のデータ フレームには値がない場合や、値の順序が異なる場合があるため、R に検索させたいもの両方のデータ フレームの V1 列は、V1 に従って V2 の値をグループ化し、データ フレームの 1 つにない V1 値がある場合は、代わりにゼロまたは NA を出力データ フレームに入れます。

マッチとマージ機能を試しましたが、今のところうまくいきません。

助けてくれてありがとう

4

1 に答える 1

0

これはどう?

merge(df.1,df.2,by="V1",all=TRUE)

   V1      V2.x      V2.y
1   1 0.9169835 0.9658816
2   2 1.0327111 1.0618083
3   3 0.8368222        NA
4   4        NA 1.2700018
5   5 1.0061137 1.0186826
6   6 1.0086698 1.1848159
7   7 1.0362074        NA
8   8 1.0979917 1.0730377
9   9        NA 1.0394662
10 10 1.0029076 0.8488569
11 11 1.1081483 0.8396724
12 12 1.0920723 0.8025356

all引数が に設定されている場合TRUE、data.frames の 1 つに一致する行が含まれていなくても、すべての行が保持されます。data.framea に一致する行が含まれていない場合、NAが埋められます。

変数名 V2 および V3 を取得するには、事前に V2 を 2 番目の V3 data.frame(ここでは df.2 として定義) に名前変更するか、マージ後に V2.x および V2.y の名前を変更します。

于 2013-08-29T09:32:39.837 に答える