我想在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。而且每一行都是一个独特的购买二。
谢谢!
答案 0 :(得分:0)
这有效......
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...