在原始数据集中,我有3k+行和2列- id和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函数时遇到了困难。
解决这个问题的可能方法是什么?有没有有效的功能来达到这个目的呢?
发布于 2021-02-12 16:04:17
一种选择是在每个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 1https://stackoverflow.com/questions/66167864
复制相似问题