好的,看看这个数据框......
customer_name order_dates order_values
1 John 2010-11-01 15
2 Bob 2008-03-25 12
3 Alex 2009-11-15 5
4 John 2012-08-06 15
5 John 2015-05-07 20
Run Code Online (Sandbox Code Playgroud)
假设我想添加一个订单变量,按照名称,按最大订单日期排序最高订单值,使用最后的订单断路器订单日期.所以,最终数据应如下所示:
customer_name order_dates order_values ranked_order_values_by_max_value_date
1 John 2010-11-01 15 3
2 Bob 2008-03-25 12 1
3 Alex 2009-11-15 5 1
4 John 2012-08-06 15 2
5 John 2015-05-07 20 1
Run Code Online (Sandbox Code Playgroud)
每个人的单个订单获得1,并且所有后续订单都根据该值进行排名,并且决胜者是获得优先权的最后订单日期.在这个例子中,John的8/6/2012订单获得了#2等级,因为它是在2010年11月1日之后放置的.2015年5月7日的订单是1,因为它是最大的.因此,即使该订单是在20年前发布的,也应该是#1 Rank,因为它是John的最高订单价值.
有谁知道如何在R中做到这一点?我可以在数据框中的一组指定变量中排名?
谢谢你的帮助!
I'd like to learn how to conditionally replace values in R data frame using if/then statements. Suppose I have a data frame like this one:
df <- data.frame(
customer_id = c(568468,568468,568468,485342,847295,847295),
customer = c('paramount','paramount','paramount','miramax','pixar','pixar'));
Run Code Online (Sandbox Code Playgroud)
I'd like to do something along the lines of, "if customer in ('paramount','pixar') make customer_id 99. Else do nothing". I'm using this code, but it's not working:
if(df$customer %in% c('paramount','pixar')){
df$customer_id == 99
}else{
df$customer_id == df$customer_id
}
Run Code Online (Sandbox Code Playgroud)
I get a warning message such as the …
我正在尝试在 Gitlab 的 CI/CD 中设置一个测试阶段。在本地,运行单元测试一切顺利且符合预期。然而,在 Gitlab 的 CI/CD 中,运行脚本时,coverage run manage.py test -v 2 && coverage report单元测试会在测试数据库中完成迁移之前执行,这是意外的,并且总是会失败。测试数据库上的迁移需要在执行单元测试之前运行。
知道为什么会发生这种行为吗?
运行时,python manage.py test默认情况下会执行以下步骤:
创建测试数据库。
数据库迁移。
运行系统检查。
运行测试。
报告测试次数和成功/失败。
删除测试数据库。
在下面的本地测试运行输出中,您可以看到这些确切的步骤,按顺序发生。问题是,在Gitlab 的 CI/CD管道中,第 2 步和第 4 步对我来说由于某种神秘的原因而被切换。
python manage.py test结果:相同的错误我的实际输出要大得多。但这是相关部分:
$ echo $TEST_SECRETS | base64 -d > config/settings/local.py
$ echo RUNNING UNIT TESTS
RUNNING UNIT …Run Code Online (Sandbox Code Playgroud)