在r中查找特定单词的频率

时间:2016-06-06 16:43:54

标签: r

我有一个文本文件,我用tm包编写了一些命令,找到了整个单词的频率。现在我想得到频率分别为一,二或三的单词列表。 我怎么能这样做?

frequency <- colSums(dtm2)
frequency <- sort(frequency, decreasing=TRUE)
words <- names(frequency)
words
words[1]

如你所见,最后一个命令返回一个频率最高的单词,在我的例子中,这个单词是&#34;没有&#34;但是我想要那些没有重复或重复过两次或三次的单词列表。

TNX

2 个答案:

答案 0 :(得分:0)

在R中,短语x[x.freq < 4]将返回x中满足x.freq < 4的所有值。你可能希望使用类似的东西,可能是你所谓的frequency变量,尽管你可能首先要对它进行一些不同的格式化。

答案 1 :(得分:0)

予。存储有单词的矢量df

 > df <- c("AAA","BB","DD","AA","AAA","CCC","PP","PP","CC","LL","OOO","LL","CC","AAA")
 > df
 # [1] "AAA" "BB"  "DD"  "AA"  "AAA" "CCC" "PP"  "PP"  "CC"  "LL"  "OOO" "LL" 
 # [13] "CC"  "AAA"

II。表格显示每个单词的频率:

 > table(df)
 #   df
 #   AA AAA  BB  CC CCC  DD  LL OOO  PP 
 #    1   3   1   2   1   1   2   1   2 

III。 result数据框中存储的每个单词的频率

 > result <- as.data.frame(table(df))
 > result
 #    df Freq
 # 1  AA    1
 # 2 AAA    3
 # 3  BB    1
 # 4  CC    2
 # 5 CCC    1
 # 6  DD    1
 # 7  LL    2
 # 8 OOO    1
 # 9  PP    2

IV。通过降低频率对单词进行排序:

 > result[order(result$Freq,decreasing=T),]
 #    df Freq
 # 2 AAA    3
 # 4  CC    2
 # 7  LL    2
 # 9  PP    2
 # 1  AA    1
 # 3  BB    1
 # 5 CCC    1
 # 6  DD    1 
 # 8 OOO    1

诉指定单词的频率:

   > result[result$df=="AAA",]
   #    df Freq
   # 2 AAA    3
   > result[result$df=="LL",]
   #    df Freq
   # 1  LL    2
   > result[result$df=="DD",]
   #    df Freq
   # 6  DD    1

VI。通过指定频率的单词:

  > unique(df[which(result$Freq == 1)])
  # [1] "AAA" "DD"  "CCC" "PP" 
  > unique(df[which(result$Freq == 2)])
  # [1] "AA" "PP" "CC"
  > unique(df[which(result$Freq == 3)])
  # [1] "BB"
  > unique(df[which(result$Freq == 4)])
  # character(0)
相关问题