在 R 中的数据帧中插入"count.if"列



我想在data.frame中插入一个新列,用于计算到目前为止客户端出现的次数。但是,我希望它每次增加 1。所以,客户A的第一次购买是1,第二次是2...

在Excel中,您继续使用count.if函数。

我已经尝试了这两个函数,但前十个是零。

customer <- as.factor(sample(c("A","B","C","D"), 50, replace = TRUE, prob = c(10,20,30,40)))
purchase <- round(runif(50, 50,150),0)
purch_id <- 1:50
my_store <- data.frame(customer,purchase, purch_id)
my_store$number1 <- apply(my_store, 1, function(x)length(which(my_store$customer==x[1] & my_store$purch_id<x[3])))
my_store$number2 <- apply(my_store, 1, function(x)sum((my_store$customer==x[1] & my_store$purch_id<x[3])))
my_store
第一列是客户,第二列是

他花了多少钱,第三列是每次购买的唯一ID。每一行都是一个独特的购买两个。

谢谢!

这有效...

my_store$number3 <- sapply(1:nrow(my_store),function(i) sum(my_store$customer==my_store$customer[i] & my_store$purch_id<=my_store$purch_id[i]))
> my_store
   customer purchase purch_id number1 number2 number3
1         B      100        1       0       0       1
2         C      120        2       0       0       1
3         D       57        3       0       0       1
4         C       98        4       0       0       2
5         C       92        5       0       0       3
6         C      127        6       0       0       4
7         B      136        7       0       0       2
8         C       87        8       0       0       5
9         D       56        9       0       0       2
10        B      114       10       1       1       3
11        B      128       11       2       2       4
12        B      142       12       3       3       5
13        B       76       13       4       4       6
14        C      138       14       0       0       6
15        B       71       15       5       5       7
16...

最新更新