首页 > 解决方案 > 计算R中单词的出现次数,总单词和总唯一单词

问题描述

我有一个巨大df的,它有一个doc_idand word,每个都word可以包含多个class(Class_1,Class_2,Class_3 ),所以如果一个词在class我放在1那里,或者如果不是那么0

样本 DF

doc_id   word       Class_1   Class_2   Class_3 
104      saturn       1         0         1
104      survival     1         1         0
104      saturn       1         0         1
104      car          0         1         0  
118      baseball     1         1         0
118      color        0         0         1
118      muscle       0         1         0
187      image        1         0         0
187      pulled       0         0         0
187      game         1         0         1
187      play         0         0         1 
187      game         1         1         0 
125      translation  1         0         0  
125      survival     0         1         0
125      input        1         0         1      
125      excellent    1         0         0 
142      nice         0         1         0
142      article      0         1         0 
142      original     1         0         1
142      content      0         1         0

现在使用这个sample DF我想计算incount的出现次数。 每个 中的总字数,例如所有文档中的总字数 和最后总字数。wordclass(Class_1,Class_2,Class_3)
class(Class_1,Class_2,Class_3)eg:wordsClass_1
unique words

OUTPUT DF应该是这样的

doc_id   word       Occ_1  Occ_2  Occ_3  Totl_1  Totl_2  Totl_3  Unique_words 
104      saturn       2      0      2      11     9       7       17
104      survival     1      2      0      11     9       7       17
104      car          0      1      0      11     9       7       17
118      baseball     1      1      0      11     9       7       17
118      color        0      0      1      11     9       7       17
118      muscle       0      1      0      11     9       7       17
187      image        1      0      0      11     9       7       17
187      pulled       0      0      0      11     9       7       17  
187      game         2      1      1      11     9       7       17
187      play         0      0      1      11     9       7       17
125      translation  1      0      0      11     9       7       17 
125      input        1      0      1      11     9       7       17
125      excellent    1      0      0      11     9       7       17
142      nice         0      1      0      11     9       7       17
142      article      0      1      0      11     9       7       17 
142      original     1      0      1      11     9       7       17
142      content      0      1      0      11     9       7       17

鉴于
Occ_1= 其他单词中出现的单词数Class_1和相同Class_2以及Class_3
Totl_1= 其他单词中相同的总单词Class_1Class_2Class_3
Unique_words= 所有文档中唯一单词的总数

标签: rdplyrdata.tabletidyversetidytext

解决方案


使用dplyr,您可以运行以下行:

library(dplyr)

data %>%
  group_by(word) %>%
  summarise(
    doc_id = first(doc_id),
    Occ_1 = sum(Class_1),
    Occ_2 = sum(Class_2),
    Occ_3 = sum(Class_3)
  ) %>%
  arrange(doc_id, word) %>%
  mutate(
    Totl_1 = sum(Occ_1),
    Totl_2 = sum(Occ_2),
    Totl_3 = sum(Occ_3),
    Unique_words = n()
  )

输出

   word        doc_id Occ_1 Occ_2 Occ_3 Totl_1 Totl_2 Totl_3 Unique_words
   <chr>       <chr>  <dbl> <dbl> <dbl>  <dbl>  <dbl>  <dbl>        <int>
 1 car         104        0     1     0     11      9      7           17
 2 saturn      104        2     0     2     11      9      7           17
 3 survival    104        1     2     0     11      9      7           17
 4 baseball    118        1     1     0     11      9      7           17
 5 color       118        0     0     1     11      9      7           17
 6 muscle      118        0     1     0     11      9      7           17
 7 excellent   125        1     0     0     11      9      7           17
 8 input       125        1     0     1     11      9      7           17
 9 translation 125        1     0     0     11      9      7           17
10 article     142        0     1     0     11      9      7           17
11 content     142        0     1     0     11      9      7           17
12 nice        142        0     1     0     11      9      7           17
13 original    142        1     0     1     11      9      7           17
14 game        187        2     1     1     11      9      7           17
15 image       187        1     0     0     11      9      7           17
16 play        187        0     0     1     11      9      7           17
17 pulled      187        0     0     0     11      9      7           17

我添加了一个arrange函数,以便按doc_id和对数据集进行排序word,否则输出数据集将按字母顺序排序word


推荐阅读