ego*_*go_ 3 r vector data.table
我没有使用data.table的经验,所以我不知道我的问题是否有解决方案(至少在Google上30分钟没有给出答案),但是就可以了。
对于data.frame,我经常使用以下命令检查唯一值的观察次数:
df$Obs=with(df, ave(v1, ID-Date, FUN=function(x) length(unique(x))))
Run Code Online (Sandbox Code Playgroud)
使用data.table时有相应的方法吗?
就在这里。令人高兴的是,您询问了data.table
v1.8.2中添加的的最新功能之一:
:=
现在已实现按组分组(FR#1491),现在通过引用将子分组分配到新列会自动添加该列(NA
在子分配不接触的地方初始化)(FR#1997)。:=
按组可以与所有类型组合i
,因此:=
按组包括按i
和分组by
。由于:=
按组分组是通过引用进行的,因此它应该比(直接或间接)cbind
将分组结果分组到DT的任何方法都快得多,因为根本没有复制(大)DT。这是一种简短自然的语法,可以与其他查询混合使用。
DT[,newcol:=sum(colB),by=colA]
在您的示例iiuc中,它应该类似于:
DT[, Obs:=.N, by=ID-Date]
Run Code Online (Sandbox Code Playgroud)
代替 :
df$Obs=with(df, ave(v1, ID-Date, FUN=function(x) length(unique(x))))
Run Code Online (Sandbox Code Playgroud)
请注意,:=
按组可很好地缩放大型数据集(较小的数据集将包含许多小型组)。
查看?":="
和搜索data.table标记以获取“参考”