按R中的相同值对值进行分组

时间:2016-01-29 12:42:43

标签: r grouping series

我希望有人能帮助我。我有一个示例数据帧: 两列,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

1 个答案:

答案 0 :(得分:1)

我们可以使用rleid中的data.table。我们将'data.frame'转换为'data.table'(setDT(df)),通过id为'num'获取运行长度并分配(:=)以创建'结果列。 / p>

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

base R选项

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