我有一个列k,v: (k1, v1), (k2, v2), (k3, v3)...
我想按键对值进行分组,然后对它们执行某些操作并生成新的数据表(或框架)(s1, t1), (s2, t2)...
。
每个分组的(k, v1, ..vi)
集可以映射到目标data.table dest
中的0行或更多行,这些行具有完全不同的键范围,与k无关。
我知道我可以写:DT[, myfun(k,v), by=k]
但我不确定这对我有什么帮助。
例如,假设我的函数myfun
需要计算s = prod(v1, ...vi)
然后
按s
增加行k
:dest[s] += k
。
我不知道如何在R中编码?
答案 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”(删除引号,但保留前面的逗号) - 否则将其设置为你想要的列的名称增加。