R:报告一个值的出现序号

标签 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

最佳答案

您可以使用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")

关于R:报告一个值的出现序号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28313217/

相关文章:

随机抽取 N 个唯一的客户 ID,同时确保交易越多,被选中的机会就越高

rCharts - 像 gvisMerge 一样组合两个 rCharts

r - ggplot2 : full number without comma? 中的日志轴标签

R data.table 删除以 "_nd"结尾的列

R Shiny -启用键盘快捷键?

r - 有没有更快的方法在 R 中制作这个混淆矩阵表?

r - 非中心卡方概率和非中心参数

r - 在R中绘制简单的中介图

r - r 中重复时间的平均网格气候数据

r - 如何使 flextable 适合 word_document 输出中侧边框的宽度? Markdown