【发布时间】:2016-04-14 14:41:59
【问题描述】:
这就是我的数据框的样子。最右边的列是我想要的列。当 ActivityType 为 Sale 时,我试图获得唯一 FundTypes 的累积总和。所以第一行有一个activitytype == email,因此没有累积总和,第二行也一样,第三行有activitytype == sale,它应该显示累积总和为1,因为条件满足。
library(data.table)
dt <- fread('
Name ActivityType FundType UniqueFundsSale(Desired)
John Email a 0
John Webinar b 0
John Sale a 1
John Sale b 2
John Webinar c 2
John Sale a 2
John Sale b 2
John Sale c 3
Tom Email a 0
Tom Webinar b 0
Tom Sale a 1
Tom Sale b 2
Tom Webinar c 2
Tom Sale a 2
Tom Sale b 2
Tom Sale c 3')
我尝试了以下方法。
dt[, UniqueFundsSale :=
cumsum(ActivityType=="Sale" & !duplicated(FundType,ActivityType) & !FundType=="")
, by = Name]
感谢您的帮助。
【问题讨论】:
-
仅供参考,您也可以
fread("text text text")构建示例。 -
@Frank 谢谢弗兰克。我不知道。所以我可以使用 fread 构建一个示例并将其直接发布到 stackoverflow?
-
是的,我会编辑它来演示一下。
标签: r data.table dplyr