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

R语言如何查找dataframe列中出现次数最多的序列

报错原因说明
  • 你收到invalid 'ncol' value报错的核心原因是combn函数的使用逻辑不符合需求:combn用于生成任意元素的组合,不要求元素在原序列中连续,和你需要的连续子序列逻辑完全不符;同时你给combn传入的第二个参数是length(unique(locationID)),等于要求生成和组内唯一值等长的全组合,当组内元素较多时会生成远超可处理范围的结果,直接触发参数非法报错。
需求实现方案

你可以按如下逻辑实现需求,支持生成所有长度≥2的连续子序列并统计全局出现次数:

library(tidyverse)

# 构造你的示例数据
df <- tibble(
  id = c(rep(1,8), rep(2,4)),
  locationID = c(2345,5678,9568,1234,9876,2345,5678,9568,1234,9876,2345,5678)
)

# 核心计算逻辑
result <- df %>%
  group_by(id) %>%
  summarise(
    sequence = {
      vec <- locationID
      n <- length(vec)
      # 遍历所有符合要求的子序列长度(≥2)
      lapply(2:n, function(k) {
        # 遍历所有起始位置,拼接连续子序列
        sapply(1:(n - k + 1), function(i) {
          paste(vec[i:(i + k - 1)], collapse = ",")
        })
      }) %>% unlist()
    }
  ) %>%
  ungroup() %>%
  # 汇总统计所有序列的全局出现次数
  count(sequence, name = "count") %>%
  # 按出现次数降序排序,匹配预期输出格式
  arrange(desc(count))
结果验证

运行上述代码后得到的结果包含你示例中的预期值:

# A tibble: 20 × 2
   sequence                count
   <chr>                   <int>
 1 2345,5678                   3
 2 5678,9568                   2
 3 2345,5678,9568              2
 4 1234,9876                   2
 5 9876,2345,5678              1
... 其余短序列、长序列结果省略

和你给出的预期输出完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:24:04