R:报告值的外观序列号

bob*_*law 1 r

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

 1. a
 2. a
 3. b
 4. b
 5. c
 6. c
 7. a
 8. a
Run Code Online (Sandbox Code Playgroud)

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

 1. 1
 2. 2
 3. 1
 4. 2
 5. 1
 6. 2
 7. 3
 8. 4
Run Code Online (Sandbox Code Playgroud)

A5C*_*2T1 6

你可以用ave.假设您的向量被称为"x",请尝试:

ave(x, x, FUN = seq_along)
# [1] "1" "2" "1" "2" "1" "2" "3" "4"
Run Code Online (Sandbox Code Playgroud)

这是完全矫枉过正,但从getanID我的"splitstackshape"包中也做到了这一点:

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
Run Code Online (Sandbox Code Playgroud)

样本数据

x <- c("a", "a", "b", "b", "c", "c", "a", "a")
Run Code Online (Sandbox Code Playgroud)

  • seq_along(x)会阻止它成为字符 (2认同)