根据R中因子级别的长度创建序列

时间:2015-02-20 19:02:21

标签: r rstudio

我正在使用R,我正在尝试创建一个新列" c"序列取决于列的长度" a"要素水平。我有一个例子前后的例子。我在创建""之后遇到了麻烦。表。有人可以帮忙吗?

BEFORE
    a b
    1 hi
    1 hello
    1 howdy
    1 hola
    2 world
    2 world
    3 something
    3 someone

AFTER    
    a b          c
    1 hi         1
    1 hello      2
    1 howdy      3
    1 hola       4
    2 world      1
    2 world      2
    3 something  1 
    3 someone    2 

2 个答案:

答案 0 :(得分:3)

这是dplyr解决方案

library(dplyr)
df %>%
  group_by(a) %>%
  mutate(c = seq(a))

  a         b c
1 1        hi 1
2 1     hello 2
3 1     howdy 3
4 1      hola 4
5 2     world 1
6 2     world 2
7 3 something 1
8 3   someone 2

data.table

library(data.table)
dt <- as.data.table(df)
dt[, c := seq(.N), by=a]

答案 1 :(得分:3)

您可以在base R

中执行此操作
df1$c <- with(df1, ave(seq_along(a), a, FUN=seq_along))

或者

library(splitstackshape)
getanID(df1, 'a')[]