【发布时间】:2019-09-05 10:02:17
【问题描述】:
我正在尝试对另一个表中的列求和,并根据一些条件将其放入当前表中。
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
【问题讨论】:
-
你能告诉你预期的输出吗?
-
另外,如果您以更可复制的格式而不是文本形式发布数据,将会很有帮助。使用
dput(head(your_data))并发布结果。 -
看起来您的数据集是
data.frame而不是data.table。试试setDT(table1)然后应用你的代码 -
@akrun 我试过了,但没用
-
好的,我的评论是基于您显示的错误。您能否请
dput这两个示例并在您的帖子中复制/粘贴输出以使数据结构正确