所以我有一个如下所示的列表
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
答案 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")