我有两个要合并的数据框。数据帧如下所示:
> head(tk1_h)
userId hobbies
1 102802401691 566588ca00016a4e470bb345
2 102802401691 566588ca00016a4e470bb34c
3 102802401691 575949efb3e4c06ffd5384e1
4 102802401691 55b3cd55ef481d737db42084
5 102802401691 566588ca00016a4e470bb350
6 102802401691 566588ca00016a4e470bb34c
和
> head(tags)
_id type content
1 55a9098ad77b192554c38d50 feed adok-veszek
2 55a909a4d77b192554c38d51 feed keres-kínál
3 55a909dad77b192554c38d52 feed jó-helyek
4 55a909e6d77b192554c38d53 feed oktatás
5 55a909ebd77b192554c38d54 feed program
6 55a909f0d77b192554c38d55 feed sport
在这里,“爱好”和“ _id”是相同的,因此通过合并两个数据帧,我将看到哪个用户具有哪些爱好(<-来自df标签的内容)。我使用了以下代码:
tk1_h2 <- merge.data.frame(tk1_h, tags, by.x = "profile", by.y = "_id")
by.x =“ profile”,因为tk1_h数据帧是嵌套的,并且看起来像这样:
> str(tk1_h)
'data.frame': 27716 obs. of 2 variables:
$ userId : num 1.03e+11 1.03e+11 1.03e+11 1.03e+11 1.03e+11 ...
$ profile:'data.frame': 27716 obs. of 1 variable:
..$ hobbies: chr "566588ca00016a4e470bb345" "566588ca00016a4e470bb34c"
"575949efb3e4c06ffd5384e1" "55b3cd55ef481d737db42084" ...
合并两个数据帧将返回此错误:
Error in sort.list(bx[m$xi]) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?
我已经看到其他有关此问题的堆栈溢出帖子,但是unlist()并没有帮助我。 如何编码正确合并两个数据帧? 谢谢!
答案 0 :(得分:0)
据我所见,问题在于您有一个嵌套的数据框。除了取消列出嵌套数据框(将其转换为向量)之外,我想不出任何解决方案:
tk1_h$profile <- unlist(tk1_h$profile)