【发布时间】:2015-06-10 15:25:44
【问题描述】:
这就是我的数据框的样子。最右边的两列是我想要的列。这两列检查过去 21 天内是否有“Email”ActivityType 以及过去 21 天内是否有“Webinar”ActivityType 的条件。
Name ActivityType ActivityDate Email(last21days) Webinar(last21day)**
John Email 1/1/2014 TRUE NA
John Webinar 1/5/2014 TRUE TRUE
John Sale 1/20/2014 TRUE TRUE
John Webinar 3/25/2014 NA TRUE
John Sale 4/1/2014 NA TRUE
John Sale 7/1/2014 NA NA
Tom Email 1/1/2015 TRUE NA
Tom Webinar 1/5/2015 TRUE TRUE
Tom Sale 1/20/2015 TRUE TRUE
Tom Webinar 3/25/2015 NA TRUE
Tom Sale 4/1/2015 NA TRUE
Tom Sale 7/1/2015 NA NA
根据此处的帮助: Extracting event types from last 21 day window 我试过了:
df$ActivityDate <- as.Date(df$ActivityDate)
library(data.table)
setDT(df)
setkey(df, Name,ActivityDate)
Elsetemp <- df[, .(Name, ActivityDate, ActivityType)]
df[Elsetemp, `:=`(Email21 = as.logical(which(i.ActivityType == "Email")),
Webinar21 = as.logical(which(i.ActivityType == "Webinar"))),
roll = -21, by = .EACHI]
无济于事,因为我只得到TRUEs 用于“销售”的行。例如,ActivityType = Webinar 的第二行,Email21 和 Webinar21 都应为 TRUE。当我定义过去 21 天时,我试图将事件发生的那一天也包括在内。
【问题讨论】:
-
您应该描述您想要的列,而不仅仅是显示它们。除非大卫已经参与问答,例如通过在此处发表评论,否则大卫不会收到您的 ping。此外,日期是乱七八糟的东西,所以也许你可以把你的 data.frame 的结构不仅仅是它的图片。 CathG 在回答您的最后一个问题时为您做到了这一点。
标签: r dataframe data.table dplyr