r - 创建具有多个变量的计数器

标签 r counter

这个问题在这里已经有了答案:





Numbering rows within groups in a data frame

(9 个回答)


5年前关闭。




我的数据如下所示:

CustomerID TripDate
1           1/3/2013
1           1/4/2013
1           1/9/2013
2           2/1/2013
2           2/4/2013
3           1/2/2013

我需要创建一个计数器变量,如下所示:
CustomerID TripDate   TripCounter
1           1/3/2013   1
1           1/4/2013   2 
1           1/9/2013   3
2           2/1/2013   1
2           2/4/2013   2 
3           1/2/2013   1 
Tripcounter将是为每个客户。

最佳答案

使用 ave .假设您的 data.frame被称为“mydf”:

mydf$counter <- with(mydf, ave(CustomerID, CustomerID, FUN = seq_along))
mydf
#   CustomerID TripDate counter
# 1          1 1/3/2013       1
# 2          1 1/4/2013       2
# 3          1 1/9/2013       3
# 4          2 2/1/2013       1
# 5          2 2/4/2013       2
# 6          3 1/2/2013       1

对于它的值(value),我还在“splitstackshape”包中包含的函数中实现了这种方法的一个版本。该函数名为 getanID :
mydf <- data.frame(IDA = c("a", "a", "a", "b", "b", "b", "b"),
                   IDB = c(1, 2, 1, 1, 2, 2, 2), values = 1:7)
mydf
# install.packages("splitstackshape")
library(splitstackshape)
# getanID(mydf, id.vars = c("IDA", "IDB"))
getanID(mydf, id.vars = 1:2)
#   IDA IDB values .id
# 1   a   1      1   1
# 2   a   2      2   1
# 3   a   1      3   2
# 4   b   1      4   1
# 5   b   2      5   1
# 6   b   2      6   2
# 7   b   2      7   3

正如您从上面的示例中看到的那样,我以这样一种方式编写了该函数,您可以指定一个或多个应被视为 ID 列的列。它检查是否有任何 id.vars是重复的,如果是,那么它会为您生成一个新的 ID 变量。

关于r - 创建具有多个变量的计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18487109/

相关文章:

r - 使用 gsub 在 data.table 中添加新列

r - 通过变量编号在AES中寻址x和y

c - 可以以编程方式更新的系统全局计数器(在各种 Linux 版本上)?

c - 微 Controller 计数器溢出和计数

php - 添加小计 PHP foreach 循环

r - 将大型异常文件导入 R

r - do add_row 和 group_by 的问题。在 add_row 中需要 group_by 变量名

r - R语言中 "I"的含义

特定产品的 flutter 增量计数器?

elasticsearch - 如何在 Elasticsearch 中使用 Java API 将响应按月份划分并添加计数器