【问题标题】:Group values by same values in R按 R 中的相同值对值进行分组
【发布时间】:2016-01-29 12:42:42
【问题描述】:

我希望任何人都可以帮助我。我有一个示例数据框: 两列,radius 和 num:

df <- data.frame(radius = c (2,3,5,7,4,6,9,8,3,7,8,9,2,4,5,2,6,7,8,9,1,10,8))
df$num <- c(1,1,1,1,2,1,1,1,1,3,3,3,3,1,1,2,2,2,3,3,3,3,3)
df

$num 列具有相同的值 (1,2,1,3,1,2,3),我想为每个分组值分配另一个值(排序)。结果应如下所示:

df$outcome <- c(1,1,1,1,2,3,3,3,3,4,4,4,4,5,5,6,6,6,7,7,7,7,7)
df

【问题讨论】:

    标签: r grouping series


    【解决方案1】:

    我们可以从data.table 使用rleid。我们将 'data.frame' 转换为 'data.table' (setDT(df)),通过 'num' 的 id 获取 run-length 并分配 (:=) 以创建 'outcome 列。

    library(data.table)
    setDT(df)[,outcome:= rleid(num)]
    

    base R 选项将是

    df$outcome <-  cumsum(c(TRUE,diff(df$num)!=0))
    

    【讨论】:

      猜你喜欢
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 2016-02-10
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多