计算其他列R

时间:2015-10-27 10:57:30

标签: r dataframe data.table

我有一个很容易回答的问题,但未能找到一个好的解决方案。

我有一个包含两列(销售和联系人)的数据框,两者都填充0或1。

sale    <- c(0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0)
contact <- c(0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0)

df <- data.frame(sale = sale, contact = contact)

我想创建两个事件,一个事件之前和事件之后。后事件是两个连续触点之间的长度(包括第一个触点本身)。在这种情况下,我们将

after = c(4,4,4)

之前的事件是前两个联系人的长度。在这种情况下,我们将

before = c(3,4,4,4)

我已经包括了第一次接触的前三周。

接下来,我想计算各个时期的销售事件,包括之前和之后。所以,我想计算两次连续接触(期间之后)或之前两次接触(期间之前)之间的销售量。

目前,我正在使用diff()来计算存在联系的索引之间的差异,然后计算索引之间的销售量。类似的东西:

df$sale    <- revalue(df$sale, c("0" = "np", "1" = "p"))
df$contact <- revalue(df$contact, c("0" = "n", "1" = "y"))

ik <- which(df$contact == "y") -1  ## this tell us the number of weeks
                                   ## before the event

before <- append(ik[1], diff(ik))

ct.before <- vector(mode="numeric", length = length(before))
for (i in 1:(length(before)-1)) {
   p <- df$sale[before[i]:before[i+1]]
   i1 <- which(p == "p")
   ct.before[i] <- length(i1)
}

与之相似。

当然,上述数据框是一个简单易用的数据框。它可以更大,并且在它们之间或多或少地分开接触。

如果有更简单,更快捷的方法吗?

0 个答案:

没有答案