長い投稿を前もって申し訳ありません。
forループを使用してこれをなんとか克服しましたが、sqldfの方が効率的であると感じていますが、今のところうまくいきません。
最初のデータ フレームには一意の識別子 (名前) があります。これは 1000x5 のようなものですが、この精神では:
Name <- c('Ben','Gary','John','Michael')
Age <- c(13,20,5,57)
dfA <- as.data.frame(cbind(Name,Age))
dfA
> Name Age
> 1 Ben 13
> 2 Gary 20
> 3 John 5
> 4 Michael 57
私の 2 番目のデータ フレームには一意のキーがありません。これも 5000x5 ですが、通常は次のようになります。
Name <- c('Ben','Ben','Ben','Gary','Michael','Michael','Michael')
Color <- c('Blue','Red','Green','Red','Yellow','Yellow','Black')
Other.Entries <- c('180','200','150','100','70','200','130')
dfB <- as.data.frame(cbind(Name,Color))
dfB
> Name Color Other_Entries(not.related)
>1 Ben Blue 180
>2 Ben Red 180
>3 Ben Green 150
>4 Gary Red 100
>5 Michael Yellow 70
>6 Michael Yellow 200
>7 Michael Black 130
各名前の色には冗長性があり、すべての名前が表示されるわけではないことに注意してください。
私の望ましい出力は次のとおりです。
データ フレーム B の各名前の色を取得します (冗長性を削除します。おそらくアルファベット順にします)。
これらのいくつかの色を文字列に変換します (たとえば、関数 "toString" を使用して)
最初のデータ フレームに文字列を新しいエントリとして追加します。
最初に for ループを使用したとき、このような空の列を持つ新しいデータ フレームを作成しました
dfCombined <- dfA
dfCombined["Color"] <- NA
.. 2 番目のデータ フレームからクエリを実行して、すべての行を反復処理します。
しかし、おそらくこれは、何か賢いものを使用する必要がないかもしれません.
最終結果は次のようになります。
dfCombined
> Name Age Color
>1 Ben 13 Blue, Green, Red
>2 Gary 20 Red
>3 John 5
>4 Michael 57 Black, Yellow
助言がありますか?