我有一个像这样的数据集:
name height
John 188
John 190
Jack 182
Jack 174
Jack 174
我需要根据(名称)和(高度)追加一个频率计数的列,而不修改数据集的结构,例如:像这样:
name height occurrence
John 188 1
John 190 1
Jack 182 1
Jack 174 2
Jack 174 2
有一个单行班吗?我环顾四周,但似乎没有找到答案。 谢谢
答案 0 :(得分:2)
使用data.table
你可以使用(感谢@David Arenburg进行改进)
require(data.table)
setDT(df1)[, occurrence := .N, by = .(name, height)]
我的原始答案(复制通过:=
引用添加的数据)
require(data.table)
setDT(df1)[,rep(.N,.N),.(name, height)]
答案 1 :(得分:1)
您可以使用base R
ave
等功能
ave(1:nrow(df), paste(df$name, df$height), FUN = length)
# [1] 1 1 1 2 2
答案 2 :(得分:1)
您也可以使用dplyr
:
require(dplyr)
data %>%
group_by(name,height) %>%
mutate(new = n()) %>%
data.frame()