我有的:
根据我最初的观察......</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 列将此表与现有数据框(称为 )合并。因此,例如,它还包含另外两列:
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
列在表格数据和原始数据之间,所以顺序不正确。