我在一个统计项目中,我有一个带有单词的表格,每个单词在文本中的出现频率,我想要的是一个样本,其结果是单词出现频率最高
你好,下午好,希望有人能帮助我。
我有一张桌子,上面有单词,每个单词出现在文本中的频率。
word <- c("banana", "watermelon", "water", "apple", "blue", "sky")
freq <- c("10", "2", "5", "8", "2", "1")
table < -cbind.data.frame(word,freq)
# word freq
# 1 banana 10
# 2 watermelon 2
# 3 water 5
# 4 apple 8
# 5 blue 2
# 6 sky 1
sample(table$freq,2)
# [1] 2 5
word <- c("banana", "watermelon", "water", "apple", "blue", "sky")
freq<- c("10", "2", "5", "8", "2", "1")
table<-cbind.data.frame(word,freq)
sample(table$freq,2)
我想要的是:
# [1] 10 8
答案 0 :(得分:2)
如果您希望基于freq
(转换为integer
)对单词进行加权概率计算,那么
sample(tb$freq, size = 2, prob = tb$freq)
让我们看看这种趋势会优先考虑我们认为应该得到的单词。为了演示,我将基于word
对freq
进行采样(因为这对我来说更有意义),您可以随意移动变量。
samps <- replicate(1000, sample(tb$word, size = 2, prob = tb$freq))
str(samps)
# chr [1:2, 1:1000] "water" "apple" "water" "banana" "watermelon" "banana" ...
sort(table(samps))
# samps
# sky watermelon blue water apple banana
# 93 151 166 370 572 648
replicate
调用给我们一个matrix
,因此对频率进行排序,我们发现banana
比其他所有频率更有可能。
我们可以看到比例大约是正确的
sort(table(samps)) / sum(table(samps))
# samps
# sky watermelon blue water apple banana
# 0.0465 0.0755 0.0830 0.1850 0.2860 0.3240
tb$pct <- tb$freq / sum(tb$freq)
tb <- tb[ order(tb$pct), ]
tb
# freq word pct
# 6 1 sky 0.03571429
# 2 2 watermelon 0.07142857
# 5 2 blue 0.07142857
# 3 5 water 0.17857143
# 4 8 apple 0.28571429
# 1 10 banana 0.35714286
数据
word <- c("banana", "watermelon", "water", "apple", "blue", "sky")
freq <- as.integer(c("10", "2", "5", "8", "2", "1"))
tb <- data.frame(freq, word)