R:在数据框中附加列,频率计数基于两列

La *_*ale 2 r data-structures dplyr

我有一个这样的数据集:

name  height 
John    188
John    190
Jack    182
Jack    174
Jack    174
Run Code Online (Sandbox Code Playgroud)

我需要附加一列,其中包含基于(名称)和(高度)的频率计数,而不修改数据集的结构,例如:

name  height occurrence
John    188      1
John    190      1
Jack    182      1
Jack    174      2
Jack    174      2
Run Code Online (Sandbox Code Playgroud)

有没有一个班轮可以做到这一点?我环顾四周,但似乎没有找到答案。谢谢

Ren*_*rop 5

使用data.table你可以使用(感谢@David Arenburg 的改进)

require(data.table)
setDT(df1)[, occurrence := .N, by = .(name, height)]
Run Code Online (Sandbox Code Playgroud)

我原来的答案(复制数据而不是通过引用添加它:=

require(data.table)
setDT(df1)[,rep(.N,.N),.(name, height)]
Run Code Online (Sandbox Code Playgroud)