私が持っているもの:
私の最初の観察から…</p>
video_id user_id keyword
1 1 foo
2 1 bar
3 1 baz
4 1 yak
1 2 foo
2 2 bar
3 2 blah
4 2 yak
1 3 foo
2 3 bar
3 3 blah
4 3 yak
…頻度(と呼ばれるtab
)のテーブルがあり、希望どおりの形式で表示されます。たとえば、
video_id foo bar baz yak blah
1 4 0 0 0 0
2 0 4 0 0 0
3 0 0 2 0 2
4 0 0 0 4 0
data
ID列に基づいて、このテーブルを既存のデータフレーム(と呼ばれる)とマージしたいと思います。したがって、たとえば、他の2つの列も含まれています。
video_id col1 col2
1 123 412
2 652 633
3 749 144
4 1738 1763
必要なもの:
ビデオIDに基づいて度数分布表と既存のデータフレームをマージする必要があります。必ずしも並べ替えられているとは限らないので、並べ替えることはできませんcbind
。これは私が必要とする結果です:
video_id col1 col2 foo bar baz yak blah
1 123 412 4 0 0 0 0
2 652 633 0 4 0 0 0
3 749 144 0 0 2 0 2
4 1738 1763 0 0 0 4 0
これで、次のようなデータフレームマトリックスを取得できることがわかりました。
as.data.frame.matrix(table(…))
しかし、このマトリックスにはvideo_id
列がありません。これは、テーブルを表示したときに実際に表示されます。video_id
では、列または行の名前がまだ含まれているデータフレームを取得するにはどうすればよいですか?
video_id
上記の例に示すように、最初にデータフレームに列を配置し、次に元の列を配置し、次に表形式のデータを追加する必要があります。
私が試したこと:
を介してテーブルの行名を取得できることはわかっています
rownames(table(…))
。また、次の方法で必要な結果を取得できます。cbind(data.frame(video_id=rownames(tab)), as.data.frame.matrix(tab))
しかし、これは私には(十分に)きれいに見えません。
と直接マージ
merge(data, as.data.frame.matrix(tab))
すべての結果が表示されますが、
video_id
列は表形式のデータと元のデータの間にあるため、正しい順序ではありません。