【发布时间】:2016-02-12 20:08:22
【问题描述】:
不知道如何用文字表达问题,但是如何为 data.table 创建一个索引列,当出现不同值时每组递增?
这里是 MWE
library(data.table)
in.data <- data.table(fruits=c(rep("banana", 4), rep("pear", 5)),vendor=c("a", "b", "b", "c", "d", "d", "e", "f", "f"))
这是 R 代码应该生成的结果
in.data[, wanted.column:=c(1,2,2,3,1,1,2,3,3)]
# fruits vendor wanted.column
# 1: banana a 1
# 2: banana b 2
# 3: banana b 2
# 4: banana c 3
# 5: pear d 1
# 6: pear d 1
# 7: pear e 2
# 8: pear f 3
# 9: pear f 3
因此,它在每个水果中标记每个供应商 1、2、3……。可能有一个非常简单的解决方案,但我被卡住了。
【问题讨论】:
-
成功了!我是这样添加的:in.data[, Wanted.2:=in.data[, rleid(vendor), by=fruits][, V1]]。也许你可以写一个答案让我接受?
标签: r data.table