gpt4 book ai didi

r - 使用 R 的频率表比较

转载 作者:行者123 更新时间:2023-12-04 17:07:47 24 4
gpt4 key购买 nike

我有两个使用 Rtable() 函数创建的频率表:

freq1 <- table(unlist(strsplit(topic_list1, split=";")))
freq2 <- table(unlist(strsplit(topic_list2, split=";")))

topic_list1topic_list2 是包含由 ; 分隔的主题的文本表示的字符串。

我想要一种比较两个频率的方法,如果可能的话以图形方式进行比较。

因此,如果两个列表包含频率不同的相同主题,我希望能够看到它。这同样适用于出现在一个频率表中但不在另一个频率表中的主题。

最佳答案

可能有更优雅的方法来做到这一点,但这应该有效:

# here I'm generating some example data
set.seed(5)
topic_list1 <- paste(sample(letters, 20, replace=T), sep=";")
topic_list2 <- paste(sample(letters, 15, replace=T), sep=";")

# I don't make the tables right away
tl1 <- unlist(strsplit(topic_list1, split=";"))
tl2 <- unlist(strsplit(topic_list2, split=";"))
big_list <- unique(c(tl1, tl2))

# this computes your frequencies
lbl <- length(big_list)
tMat1 <- matrix(rep(tl1, lbl), byrow=T, nrow=lbl)
tMat2 <- matrix(rep(tl2, lbl), byrow=T, nrow=lbl)
tMat1 <- cbind(big_list, tMat1)
tMat2 <- cbind(big_list, tMat2)
counts1 <- apply(tMat1, 1, function(x){sum(x[1]==x[2:length(x)])})
counts2 <- apply(tMat2, 1, function(x){sum(x[1]==x[2:length(x)])})
total_freqs <- rbind(counts1, counts2, counts1-counts2)

# this makes it nice looking & user friendly
colnames(total_freqs) <- big_list
rownames(total_freqs) <- c("topics1", "topics2", "difference")
total_freqs <- total_freqs[ ,order(total_freqs[3,])]
total_freqs
d l a z b f s y m r x h n i g k c v o
topics1 0 0 0 0 0 2 1 1 1 1 2 2 1 1 1 1 2 2 2
topics2 2 2 2 1 1 2 1 1 1 0 1 1 0 0 0 0 0 0 0
difference -2 -2 -2 -1 -1 0 0 0 0 1 1 1 1 1 1 1 2 2 2

从那里您可以只使用直接数字或根据需要可视化它们(例如,点图等)。这是一个简单的点图:

windows()
dotchart(t(total_freqs)[,3], main="Frequencies of topics1 - topics2")
abline(v=0)

enter image description here

关于r - 使用 R 的频率表比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18674459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com