我有一个用R创建的data.table,内容如下:
library(data.table)
dt = data.table(ID = c("person1", "person1", "person1", "person2", "person2", "person2", "person2", "person2", ...), category = c("red", "red", "blue", "red", "red", "blue", "green", "green", ...))
dt
ID category
person1 red
person1 red
person1 blue
person2 red
person2 red
person2 blue
person2 green
person2 green
person3 blue
....
我想知道如何为每个唯一的ID创建分类变量 red
、blue
、green
的“频率”,然后将这些列扩展以记录每个计数。结果数据表应如下所示:
dt
ID red blue green
person1 2 1 0
person2 2 1 2
...
我曾错误地认为使用 data.table
开始的正确方式是按组计算 table()
,例如:
dt[, counts :=table(category), by=ID]
但是这似乎是按组ID计算分类值的总数。这也不能解决我“扩展”数据表的问题。
正确的做法是什么?
dplyr
):假设原始的dt
有几列:如果我想保留另一列怎么办?目前,dcast(ID ~ category)
的结果是一个仅包含ID和类别(就像我的例子一样)的数据表。 - ShanZhengYang