【问题标题】:Increment a Value by Group [duplicate]按组增加值[重复]
【发布时间】:2017-01-23 17:06:55
【问题描述】:

如何在组内发生更改时增加列?

示例数据表:

library(data.table)
dt = data.table(id = c(1,1,1,1,2,2), loc = c(1,1,1,2,1,1), var = c("N","Y","N","N","N","N"))

   id loc var
1:  1   1   N
2:  1   1   Y
3:  1   1   N
4:  1   2   N
5:  2   1   N
6:  2   1   N

我想按 id 和 loc 分组,每当列 var 发生变化时,我想将 1 添加到新列。

期望的输出:

   id loc var V2
1:  1   1   N  1
2:  1   1   Y  2
3:  1   1   N  3
4:  1   2   N  1
5:  2   1   N  1
6:  2   1   N  1

【问题讨论】:

  • 不是重复的。使用 .grp 将添加 v2 = c(1,1,1,2,3)
  • @Kristofersen stackoverflow.com/q/27959280 怎么样?嗯,不确定是否适合...
  • @Frank 是的,那个是一样的。我搜索的时候没有找到。我应该删除问题吗?
  • 不,我认为应该保留它并标记为骗子。您的标题和示例很明确,而杜绝欺骗只会使您的帖子成为其他人的路标。
  • @Frank 谢谢,我去看看。

标签: r data.table


【解决方案1】:
dt[ , rleid(var),by = .(id, loc)]
#   id loc V1
#1:  1   1  1
#2:  1   1  2
#3:  1   1  3
#4:  1   2  1
#5:  2   1  1
#6:  2   1  1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2019-08-07
    • 2021-09-16
    • 2020-08-28
    • 2021-04-02
    • 2010-09-28
    • 2013-04-24
    相关资源
    最近更新 更多