计算其他列R的给定值的发生次数

计算其他列R的给定值的发生次数,r,dataframe,data.table,R,Dataframe,Data.table,我有一个很容易回答的问题,但一直没有找到一个好的解决办法 我有一个数据框,有两列,sales和contact,两列都用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) before事件是前两次接触的长度。在这种情况下,我们将

我有一个很容易回答的问题,但一直没有找到一个好的解决办法

我有一个数据框,有两列,sales和contact,两列都用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)
before事件是前两次接触的长度。在这种情况下,我们将

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)
}

df$sale这个问题还不清楚。您如何定义前两次接触长度中的3?此外,您也不会每次联系都这样做。。。否则向量会更长。我有点迷失在整个措辞中。你能不能加上你确切的数据输出?对措辞的努力将反映出对问题的清楚理解。。。也许是一个自己的解决方案……问题还不清楚。您如何定义前两次接触长度中的3?此外,您也不会每次联系都这样做。。。否则向量会更长。我有点迷失在整个措辞中。你能不能加上你确切的数据输出?对措辞的努力将反映出对问题的清楚理解。。。也许是一个自己的解决方案。。。
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)
}