如何在R语言中统计列表中数值组合的出现次数
统计连续数值对出现次数的R实现
针对你给出的数值列表,这里提供几种实用的R代码实现来统计连续数值对的出现次数:
方法一:基础R原生实现(无需额外包)
直接通过拆分向量构造数值对,再用table统计:
x <- c(1,3,2,4,2,3,4,4,1,3,2,3,4,1) # 生成连续数值对的字符串形式 pairs <- paste(head(x, -1), tail(x, -1), sep = ",") # 统计每个数值对的出现次数 pair_counts <- table(pairs) # 查看结果 pair_counts
运行后会输出类似这样的结果:
pairs 1,3 2,3 2,4 3,2 3,4 4,1 4,2 4,4 2 2 1 1 2 1 1 1
刚好对应你提到的(2,3)和(1,3)各出现2次的需求。
如果想要保留数值对的二维结构(而非字符串),可以用数据框配合table:
pair_df <- data.frame(first = head(x, -1), second = tail(x, -1)) # 生成交叉统计表 cross_table <- table(pair_df) # 查看特定数值对的次数,比如(2,3) cross_table["2", "3"] # 输出2 cross_table["1", "3"] # 输出2
方法二:用dplyr实现(tidyverse风格)
如果你习惯tidyverse的语法,用dplyr可以得到更直观的结构化结果:
library(dplyr) library(tibble) x <- c(1,3,2,4,2,3,4,4,1,3,2,3,4,1) x_df <- tibble(current = x) x_df %>% mutate(next_val = lead(current)) %>% # 获取每个元素的下一个元素 filter(!is.na(next_val)) %>% # 移除最后一行(无后续元素) count(current, next_val, name = "occurrences") # 统计每个数值对的次数
运行后会得到一个数据框,清晰展示每个数值对及其出现次数:
# A tibble: 8 × 3 current next_val occurrences <dbl> <dbl> <int> 1 1 3 2 2 2 3 2 3 2 4 1 4 3 2 1 5 3 4 2 6 4 1 1 7 4 2 1 8 4 4 1
内容的提问来源于stack exchange,提问作者Boyuan Zhao
相关产品推荐
相关产品推荐

