R 如何根据字符变量中的唯一值获取累积和?
我有一个df,它表示用户在一段时间内的浏览行为。因此,df包含一个唯一的UserId,每一行都有一个时间戳,表示对某个网站的访问。每个网站都有一个独特的网站Id和一个独特的网站类别,比如c(“电子”、“服装”等等)。 现在,我想计算每行用户访问到该行(包括该行)的每个类别的唯一网站数。我称这个变量为“宽度”,因为它表示用户浏览互联网的宽度 到目前为止,我只设法生成哑代码,通过对每个类别进行过滤,创建每个类别访问的唯一网站的总数,然后用户获取唯一向量的长度,然后进行左连接。 因此,随着时间的推移,我确实会丢失有关发展的信息 非常感谢R 如何根据字符变量中的唯一值获取累积和?,r,data-manipulation,R,Data Manipulation,我有一个df,它表示用户在一段时间内的浏览行为。因此,df包含一个唯一的UserId,每一行都有一个时间戳,表示对某个网站的访问。每个网站都有一个独特的网站Id和一个独特的网站类别,比如c(“电子”、“服装”等等)。 现在,我想计算每行用户访问到该行(包括该行)的每个类别的唯一网站数。我称这个变量为“宽度”,因为它表示用户浏览互联网的宽度 到目前为止,我只设法生成哑代码,通过对每个类别进行过滤,创建每个类别访问的唯一网站的总数,然后用户获取唯一向量的长度,然后进行左连接。 因此,随着时间的推移,
total_breadth <- df %>% filter(category=="electronics") %>%
group_by(user_id) %>%
mutate(breadth=length(unique(website_id)))
这似乎是一个拆分、应用和合并的案例。 创建1和0的二进制矩阵,其维度为:
- 行数=原始数据中的行数
- 列数=唯一网站类别数
虽然这似乎不是一个优雅的解决方案,但希望这能暂时解决您的问题。这似乎是一个拆分、应用和合并的案例。 创建1和0的二进制矩阵,其维度为:
- 行数=原始数据中的行数
- 列数=唯一网站类别数
虽然这似乎不是一个优雅的解决方案,但希望这能暂时解决您的问题。您的
左键连接
并没有做您认为它正在做的事情total_width
已包含所有其他变量加上width
。如果我正确理解了您使用过滤器所做的操作,您可能应该将类别
添加到分组变量中。我不清楚你是如何随时间丢失信息的。如果df
改变,宽度也会改变。我的df的问题是,宽度变量的计算方法不正确。宽度变量应以累积方式(而非总计)反映基于每个类别的唯一网站ID的宽度。长度(unique())组合计算每个类别每个用户的完整向量上的变量。相关问题:那边答案的核心部分有效。在您想要执行的每组值中,cummax(作为.numeric(因子(x,levels=unique(x)))
您的left\u join
没有执行您认为它正在执行的操作total_width
已包含所有其他变量加上width
。如果我正确理解了您使用过滤器所做的操作,您可能应该将类别
添加到分组变量中。我不清楚你是如何随时间丢失信息的。如果df
改变,宽度也会改变。我的df的问题是,宽度变量的计算方法不正确。宽度变量应以累积方式(而非总计)反映基于每个类别的唯一网站ID的宽度。长度(unique())组合计算每个类别每个用户的完整向量上的变量。相关问题:那边答案的核心部分有效。在您想要执行的每组值中cummax(作为.numeric(因子(x,levels=unique(x)))
#Structure of the df I want to achieve:
user_id time website_id category breadth
1 1 70 "electronics" 1
1 2 93 "clothing" 1
1 3 34 "electronics" 2
1 4 93 "clothing" 1
1 5 26 "electronics" 3
1 6 70 "electronics" 3
#Structure of the df I produce:
user_id time website_id category breadth
1 1 70 "electronics" 3
1 2 93 "clothing" 1
1 3 34 "electronics" 3
1 4 93 "clothing" 1
1 5 26 "electronics" 3
1 6 70 "electronics" 3