Количество слов для текста в колонке

У меня есть набор данных со столбцом, содержащим текст следующим образом

    Column1
    ----------------------------------------------------------
    dapagliflozin 10 MG / metFORMIN hydrochloride 
    dapagliflozin 5 MG / metFORMIN hydrochloride  
    Fortamet       
    Glucophage      
    Glumetza      
    metFORMIN hydrochloride      
    metFORMIN hydrochloride  / pioglitazone 15 MG     
    metFORMIN hydrochloride  / pioglitazone 30 MG      

Я пытаюсь получить количество слов для каждого уникального слова, например, количество слов для метформина, количество слов для гидрохлорида и т. д. Мне нужна помощь; Я попробовал табличную функцию, но она использует всю строку как одно слово, и это бесполезно.


person Ezra Polson    schedule 09.07.2015    source источник


Ответы (2)


Мы можем использовать комбинацию strsplit/unlist/table. Разделите строки столбцов с помощью strsplit, указав split в качестве пробела (\\s+). На выходе будет list. Используйте unlist, чтобы изменить список на вектор, а затем используйте table, чтобы получить количество.

 table(unlist(strsplit(yourdf$Column1, '\\s+'))
person akrun    schedule 09.07.2015

Или используйте предназначенный для этого пакет анализа текста:

> require(quanteda)
> dfm(myColumn)
Creating a dfm from a character vector ...
   ... lowercasing
   ... tokenizing
   ... indexing 1 document
   ... shaping tokens into data.table, found 21 total tokens
   ... summing tokens by document
   ... indexing 8 feature types
   ... building sparse matrix
   ... created a 1 x 8 sparse dfm
   ... complete. Elapsed time: 0.047 seconds.
Document-feature matrix of: 1 document, 8 features.
1 x 8 sparse Matrix of class "dfmSparse"
       features
docs    dapagliflozin fortamet glucophage glumetza hydrochloride metformin mg pioglitazone
  text1             2        1          1        1             5         5  4            2
person Ken Benoit    schedule 13.07.2015