【问题标题】:How to count each column values frequency combinations in R?如何计算 R 中每列值的频率组合?
【发布时间】:2021-02-12 07:31:39
【问题描述】:

在原始数据集中,我有 3k+ 行和 2 列 - id 和可以在实践中应用的语言。我的第一步是找到所选语言的频率组合。例如,Python 与 R、SQL 一起选择了多少次;或者 Java 被 JavaScript、C++ 等选中的次数。

对 Stackoverflow 的一些研究帮助我找到了这些可能的模式。下面是一些带有示例数据集的代码:

sample <- data.frame(id = rep(randomNames::randomNames(4), each = 4),
                     programming = c("R", "Python", "C#", "Other",
                                     "R", "Tableu", "Assembler",
                                     "Other", "Java", "JavaScript",
                                     "Python", "C#","R", "Python", "C#",
                                     "Other"))
gr <- sample %>%
  group_by(id) %>%
  arrange(programming) %>%
  summarise(programming = paste(sort(unique(programming)), collapse = ", ")) %>%
  count(programming)

但现在我想知道如何才能找到每种语言最常见的选择数量。例如,R 语言很少与 Java 和 Kotlin 一起使用,这不是一个非常流行的设置。但是与 Python 和 SQL 一起选择的 R 更受欢迎。我的目的是找出最常被选中的语言。

我也做了一些研究 (example),不幸的是,还没有找到解决方案。

我认为我应该迭代我的programming 列以找到所有可能的选择(R + ...、Python + ...;然后是 R + Python + ...)。我尝试使用lapply,但在编写 lambda 函数时遇到了困难。

解决问题的可能方法是什么?是否有任何有效的功能用于此类目的?

【问题讨论】:

  • 您可以阅读arules 包(来自其描述“提供用于表示、操作和分析事务数据和模式(常用项集和关联规则)的基础设施。”
  • @dario 谢谢!我会对这个包做一些研究,还没有听说过。

标签: r iteration


【解决方案1】:

一种选择是在idcount 中创建最常一起出现的语言组合。 .

library(dplyr)

sample %>%
  group_by(id) %>%
  summarise(programming = combn(sort(programming), 2, 
                                paste0, collapse = '-'), .groups = 'drop') %>%
  count(programming, sort = TRUE)

#   programming           n
#   <chr>             <int>
# 1 C#-Python             3
# 2 Other-R               3
# 3 C#-Other              2
# 4 C#-R                  2
# 5 Other-Python          2
# 6 Python-R              2
# 7 Assembler-Other       1
# 8 Assembler-R           1
# 9 Assembler-Tableu      1
#10 C#-Java               1
#11 C#-JavaScript         1
#12 Java-JavaScript       1
#13 Java-Python           1
#14 JavaScript-Python     1
#15 Other-Tableu          1
#16 R-Tableu              1

【讨论】:

  • 谢谢你,@Ronak Shah。 .groups = "drop" 是做什么的?
  • 不使用ungroup%&gt;% ungroup()相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多