我正在寻找用于操纵data.table对象的模式,这些对象的结构类似于melt从reshape2包创建的数据帧的结构.我正在处理数百万行的数据表.表现至关重要.
问题的一般形式是是否存在基于列中的值的子集执行分组并且使分组操作的结果创建一个或多个新列的方法.
问题的一个特定形式可能是如何使用data.table以完成以下内容的等效dcast:
input <- data.table(
id=c(1, 1, 1, 2, 2, 2, 3, 3, 3, 3),
variable=c('x', 'y', 'y', 'x', 'y', 'y', 'x', 'x', 'y', 'other'),
value=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
dcast(input,
id ~ variable, sum,
subset=.(variable %in% c('x', 'y')))
Run Code Online (Sandbox Code Playgroud)
其输出是
id x y
1 1 1 5
2 2 4 11
3 3 15 9
Run Code Online (Sandbox Code Playgroud)