gpt4 book ai didi

mysql - 基于if条件的第二个表中的R sum列

转载 作者:行者123 更新时间:2023-11-30 21:32:07 25 4
gpt4 key购买 nike

我正在尝试对另一个表中的列求和,并根据多种条件将其放入我当前的表中。

table1 <- tribble(~company_id,~date,
1,"2018-01-02",
1,"2018-01-03",
2,"2018-01-02",
2,"2018-01-03")

table2 <- tribble(~other_id, company_id,~date_created,~max_rank,rank,date_closed,
1,1,"2018-01-02",20,2,NA,
1,1,"2018-01-03",22,1,NA,
2,2,"2018-01-02",20,5,NA,
2,2,"2018-01-03",22,4,NA)

我想在表 1 中创建一个新列,它将输入以下公式:

= sum( (max_rank-rank)/(max_rank-1))

但仅当:

(date<=date_created, date>(date_created+20), date<date_closed, max_rank-1!=0, rank!=0)

编辑

我希望实现的输出应该是这样的:

 Table 1 
| company id | date | cc score |
---------------------------------------
| 1 | 2018-01-02 | 0.9473 |
| 1 | 2018-01-03 | 1.9473 |
| 2 | 2018-01-02 | 0.7895 |
| 2 | 2018-01-03 | 1.6466 |

第一个可以计算为 (20-2)/(20-1) = 0.9473第二个计算为 (20-2)/(20-1) + (22-1)/(22-1) = 1.9473

最佳答案

您可以使用dplyr 包。请尝试以下代码:

> library(dplyr)
> cbind(table1,table2)%>%inner_join(table1)%>%inner_join(table2)%>%filter(date<=date_created|date>(date_created+20)&max_rank-1!=0&rank!=0)%>%mutate(cc_data=(max_rank-rank)/(max_rank-1))%>%group_by(company_id)%>%mutate(cc_data=cumsum(cc_data))%>%select(company_id,date,cc_data)
  • cbind() 的使用:我们需要 date_created 和 date 列。

  • 两次inner_join():确保没有多余的数据。

Please suggest a better solution than this.

关于mysql - 基于if条件的第二个表中的R sum列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55688888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com