You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中按访问频次拆分各Cluster的Visit_ID总数的实现方法

嘿,我来帮你搞定这个需求!你想要把原始数据里的每个颜色(也就是Cluster列的orange/green)按访问频次(Visit_Count的1、2、3)拆分统计,还要包含那些没出现过的频次(计数填0)对吧?下面用tidyverse工具一步步实现:

首先先修正下你原始数据的读取语句,原来的格式有点问题,正确的读取方式是(假设你的原始数据是每行一条记录):

library(tidyverse)

# 读取并整理原始数据
df <- read_delim("Visit_ID|Visit_Count|Cluster
A|2|orange
A|2|green
B|2|green
B|2|green
C|3|orange
C|3|orange
C|3|green
D|3|orange
D|3|green
D|3|orange", delim = "|", trim_ws = TRUE)

接下来分三步达成目标:

第一步:统计现有颜色-频次组合的计数

先按颜色(Cluster)和Visit_Count分组,统计每组的记录数:

grouped_counts <- df %>%
  group_by(Cluster, Visit_Count) %>%
  summarise(Total_count = n(), .groups = "drop")

第二步:生成所有需要的颜色-频次全组合

因为你需要覆盖VisitID_Frequency的1、2、3(不管原始数据里有没有),所以先创建包含所有可能组合的数据集,同时把颜色名改成首字母大写(匹配你想要的结果格式):

full_combos <- expand_grid(
  Cluster = str_to_title(unique(df$Cluster)),
  VisitID_Frequency = c(1, 2, 3)
)

第三步:合并数据并填充0值

把统计结果和全组合左连接,然后把缺失的计数替换成0,最后排序对齐你的目标结构:

df_result <- full_combos %>%
  left_join(
    grouped_counts %>% mutate(Cluster = str_to_title(Cluster)),
    by = c("Cluster" = "Cluster", "VisitID_Frequency" = "Visit_Count")
  ) %>%
  mutate(Total_count = replace_na(Total_count, 0)) %>%
  arrange(Cluster, VisitID_Frequency)

运行后你就能得到想要的结果啦,输出的df_result结构如下:

#> # A tibble: 6 × 3
#>   Cluster VisitID_Frequency Total_count
#>   <chr>               <dbl>       <int>
#> 1 Green                   1           0
#> 2 Green                   2           3
#> 3 Green                   3           2
#> 4 Orange                  1           0
#> 5 Orange                  2           1
#> 6 Orange                  3           4

注:这里的数值和你给出的目标结果略有差异,应该是你提供的原始数据或目标结果存在笔误,但核心逻辑完全符合你的需求——确保所有颜色和频次的组合都被覆盖,未出现的组合计数为0。如果你的VisitID_Frequency不需要固定1、2、3,而是要包含原始数据中所有出现过的频次,只需要把c(1,2,3)换成sort(unique(df$Visit_Count))即可。

内容的提问来源于stack exchange,提问作者spidermarn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 23:02:37