从R中的篮子格式表转换二进制表

时间:2018-03-22 09:04:28

标签: r data.table

我有一个名为userItems的数据表,其格式如下:

    user_id    tag_id
1   27938 wordpress
2   27938      CSS3
3   27938     HTML5
4   27938     MySQL
5   27934    drupal
6   27934    joomla

这只是表的头部,但它代表了其余的数据。它只包含用户及其所属标签。现在我想将其转换为二进制格式(不知道这是否是正确的名称),如下例所示:

   user tag1 tag2 tag3 tag4 tag5 tag6
1    1    0    0    0    0    0    0
2   33    0    0    1    0    0    0
3   42    0    0    0    0    0    0
4   51    0    0    0    0    0    0
5   62    0    0    0    0    0    0
6   75    0    0    0    0    0    0

1表示用户拥有该标签。在我的例子中,例如wordpress。并且0表示他没有那个标签。因此,用户27934在drupal和joomla上会有1个。

我如何将第一张桌子更改为第二张桌子?一些提示或最佳实践可以真正帮助我。

1 个答案:

答案 0 :(得分:1)

如果你提供一个可重复的例子,它总是更好。

然而,

df <- data.frame(id = c(1,1,1,1,2,2), tag_id = c("a", "b", "c", "d", "e", "f"))

print(df)

second_table <- table(df)
print(second_table)

功能table()可以从contingency table开始创建data.frame

最后,如果您希望结果表为data.frame类而不是table类:

as.data.frame.matrix(second_table)