如何使用dplyr计算会话中不同项目的平均购买量
我有一个包含3列的数据框:会话id、项目id和类。在类列中,0表示“未购买”,1表示“已购买”如何使用dplyr计算会话中不同项目的平均购买量,r,dplyr,R,Dplyr,我有一个包含3列的数据框:会话id、项目id和类。在类列中,0表示“未购买”,1表示“已购买” > data session id item id class 1 1 0 1 1 0 1 1 0 2 1 1 2
> data
session id item id class
1 1 0
1 1 0
1 1 0
2 1 1
2 2 0
3 1 0
3 0 1
3 3 1
3 2 0
我想计算每个唯一会话id的不同项目的平均购买数量。在会话id 1中,仅包含一个唯一项目和0个购买,因此平均值为0/1=0,会话id 2包含1个购买和2个唯一项目,因此平均值为1/2=0.5,会话id 3包含2个购买和4个唯一项目,因此平均值为2/4=0.5。结果如下所示:
> result
session id avg
1 0/1=0
2 0.5
3 0.5
到目前为止,我一直在尝试:
data %>%
group_by(session_id) %>%
summarise(avg = ifelse(length(Class==1))/length(unique(item_id)))
但我得到了一个错误:
总结内容中出错(.data,dots):
计算错误:缺少参数“是”,没有默认值。
我怎样才能解决这个问题
我们可以使用
sum
来计算总purchase
和n\u distinct
来获得唯一的项目id
library(dplyr)
df %>%
group_by(session_id) %>%
summarise(avg = sum(class)/n_distinct(item_id))
# session_id avg
# <int> <dbl>
#1 1 0
#2 2 0.5
#3 3 0.5
库(dplyr)
df%>%
分组人(会话id)%>%
总结(平均值=总和(类别)/n不同(项目id))
#会话id平均值
#
#1 1 0
#2 2 0.5
#3 3 0.5