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

R语言如何无冗余地汇总dataframe中node两侧搭配词的出现频率

你原来的代码出现冗余的原因是仅用node作为关联键进行左连接时,会生成笛卡尔积:每个node下有M个不同的left取值、N个不同的right取值时,关联后会生成M*N行,因此出现大量重复条目。

可以通过给每个node下的左右侧统计结果分别添加组内行号,按node+行号一一对应关联,即可得到你想要的无冗余结果,实现代码如下:

library(tidyverse)

# 统计各node下left的出现频率,按频率降序后添加组内行号
df_l <- df %>%
  group_by(node, left) %>%
  summarise(n_left = n(), .groups = "drop_last") %>%
  arrange(desc(n_left)) %>%
  mutate(id = row_number()) %>%
  ungroup()

# 统计各node下right的出现频率,按频率降序后添加组内行号
df_r <- df %>%
  group_by(node, right) %>%
  summarise(n_right = n(), .groups = "drop_last") %>%
  arrange(desc(n_right)) %>%
  mutate(id = row_number()) %>%
  ungroup()

# 按node和行号关联,删除辅助列id后得到结果
df_all <- inner_join(df_l, df_r, by = c("node", "id")) %>%
  select(n_left, left, node, right, n_right)

运行后输出的df_all就是你需要的结果:

# A tibble: 4 × 5
  n_left left  node  right n_right
   <int> <chr> <chr> <chr>   <int>
1      3 a     xxx   d           3
2      1 b     xxx   c           1
3      3 a     yyy   c           2
4      1 b     yyy   d           2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:36:05