如何解决在 data.table 中按组计算每个唯一年份的观察值
我想计算自 data.table 中第一次观察以来的唯一年数。下面的例子:
data <- structure(list(club = c("Ajax","Ajax","Barcelona","Barcelona"),years = c(1994,1994,1995,2014,2015)),row.names = c(NA,-9L),class = c("data.table","data.frame"))
club years
1: Ajax 1994
2: Ajax 1994
3: Ajax 1994
4: Ajax 1995
5: Ajax 1995
6: Ajax 1995
7: Barcelona 2014
8: Barcelona 2014
9: Barcelona 2015
我想要这个:
club years count
1: Ajax 1994 1
2: Ajax 1994 1
3: Ajax 1994 1
4: Ajax 1995 2
5: Ajax 1995 2
6: Ajax 1995 2
7: Barcelona 2014 1
8: Barcelona 2014 1
9: Barcelona 2015 2
解决方法
在 match
'years' by 'club' 上使用 unique
并将输出分配 (:=
) 到新列
data[,count := match(years,unique(years)),by = club]
或者可以使用 rleid
data[,count := rleid(years),club]
,
基础 R 解决方案:
df$count <- with(
df,unlist(
tapply(
years,club,FUN = function(x){
as.integer(
factor(
x,levels = unique(
x
)
)
)
}
)
)
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。