簡體   English   中英

如何計算 R 中的每列值頻率組合?

[英]How to count each column values frequency combinations in R?

在原始數據集中,我有 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 更受歡迎。 我的目的是找出哪些語言被選中的頻率最高。

我也做了一些研究( 例子),不幸的是,還沒有找到解決方案。

我想我應該迭代我的programming專欄以找到所有可能的選擇(R +...,Python +...;然后是 R + Python +...)。 我嘗試使用lapply ,但在編寫 lambda function 時遇到了困難。

解決問題的可能方法是什么? 是否有任何有效的 function 用於此類目的?

一種選擇是在每個id中創建語言組合並count最常一起出現的組合。 .

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM