R:报告值的外观序列号

时间:2015-02-04 03:54:23

标签: r

所以我有一个如下所示的列表

 1. a
 2. a
 3. b
 4. b
 5. c
 6. c
 7. a
 8. a

是否可以根据R中每个值的顺序得到一个数字列表:

 1. 1
 2. 2
 3. 1
 4. 2
 5. 1
 6. 2
 7. 3
 8. 4

1 个答案:

答案 0 :(得分:6)

您可以使用ave。假设您的向量被称为“x”,请尝试:

ave(x, x, FUN = seq_along)
# [1] "1" "2" "1" "2" "1" "2" "3" "4"

这是完全矫枉过正,但我​​的“splitstackshape”包中的getanID也是这样做的:

library(splitstackshape)
getanID(as.data.table(x), "x")
#    x .id
# 1: a   1
# 2: a   2
# 3: b   1
# 4: b   2
# 5: c   1
# 6: c   2
# 7: a   3
# 8: a   4

样本数据

x <- c("a", "a", "b", "b", "c", "c", "a", "a")