[英]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.