【发布时间】:2019-11-01 09:06:31
【问题描述】:
我正在做一些数据清理/格式化,我想按名称和日期为每条记录添加一个唯一标识符。例如,“Bob”可能有四个签到日期,其中两个是相同的。对于这样的情况,我想给他三个不同的(连续的)身份证号码。
这是我得到的最接近我想要的结果:
我创建的示例数据集:
tst <- data_frame(
name = c("Bob", "Sam", "Roger", "Stacy", "Roger", "Roger", "Sam", "Bob", "Sam", "Stacy", "Bob", "Stacy", "Roger", "Bob"),
date = as.Date(c("2009-07-03", "2010-08-12", "2009-07-03", "2016-04-01", "2002-01-03", "2019-02-10", "2005-04-17", "2009-07-03", "2010-09-21", "2012-11-12", "2015-12-31", "2014-10-10", "2015-06-02", "2003-08-21")),
amount = round(runif(14, 0, 100), 2)
)
正在生成一个check_in_number 变量...
tst2 <- tst %>%
arrange(date) %>%
group_by(name, date) %>%
mutate(check_in_number = row_number())
上面的行将为 Bob 生成check_in_number,依次为1、1、2、1。我希望输出为1、2、2、3。换一种说法。我希望将同一日期的签到实例视为一次签到。
tidyverse 可以做到这一点吗?我是否忽略了一个简单的方法?
这里有一个类似的问题,但我将其搁置,因为我所涉及的问题涉及我正在安排数据的有序日期变量。换句话说,我的数据要求我的新变量是连续的。
How to number/label data-table by group-number from group_by?
【问题讨论】: