效率不高:
install.packages("dplyr") #only once library(dplyr) bb <- aa bb$temp1 <- (bb$Bidding_Time == "")*1 bb$temp2 <- 1 for(i in 2:dim(bb)[1]){ if(bb$temp1[i]==bb$temp1[i-1]) { bb$temp2[i] <- bb$temp2[i-1] } else { bb$temp2[i] <- bb$temp2[i-1]+1 } } bb <- bb %>% group_by(itemid, temp2) %>% mutate(Count=cumsum(temp1)) %>% ungroup %>% mutate(Count=lag(Count)) %>% select(itemid, username, Bidding_Time, Count) bb$Count[is.na(bb$Count)] <- 0 bb %>% View
在这里使用非常接近 rle ,但我无法完成它。也许有人可以为我挑选...
rle
a <- c("", "", "", "A", "A", "", "", "B", "A", "C", "", "") b <- a!="" c <- rep(rle(b)$lengths, rle(b)$lengths) c2 <- c(NA, c[-length(c)]) > cbind(a,c2) a c2 [1,] "" NA [2,] "" "3" [3,] "" "3" [4,] "A" "3" [5,] "A" "2" [6,] "" "2" [7,] "" "2" [8,] "B" "2" [9,] "A" "3" [10,] "C" "3" [11,] "" "3" [12,] "" "2"