微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 data.table 中按组计算每个唯一年份的观察值

如何解决在 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 举报,一经查实,本站将立刻删除。