从旧的建立新的data.table

时间:2014-04-09 09:13:17

标签: r data.table

我有一个列k,v: (k1, v1), (k2, v2), (k3, v3)...

的数据表DT

我想按键对值进行分组,然后对它们执行某些操作并生成新的数据表(或框架)(s1, t1), (s2, t2)...

每个分组的(k, v1, ..vi)集可以映射到目标data.table dest中的0行或更多行,这些行具有完全不同的键范围,与k无关。

我知道我可以写:DT[, myfun(k,v), by=k]但我不确定这对我有什么帮助。

例如,假设我的函数myfun需要计算s = prod(v1, ...vi)然后 按s增加行kdest[s] += k

我不知道如何在R中编码?

1 个答案:

答案 0 :(得分:0)

您可以创建DT的摘要版本:

DT1 <- DT[, prod(v), by=k]

然后使用此值增加dest,$ v现在等于帖子中的 s ,因此标识要递增的行:

dest[DT1$v, "columnToBeIncreased"] = dest[DT1$v, "columnToBeIncreased"] +DT1$k

你说dest是一个data.table,你想要按给定的数量增加一行。如果你想要增加整行(即该行中的所有列),省略“columnToBeIncreased”(删除引号,但保留前面的逗号) - 否则将其设置为你想要的列的名称增加。