как установить цель в функции textstat_keyness Quanteda, связанной с датой

Он работает как target = year(dfmat_news$datee) >= 2016

tstat_key <- textstat_keyness(hr_dfm,
                          measure = "chi2",sort = TRUE, correction = c("default"),
                          target = year(dfmat_news$datee) >= 2016)

КАК я установил target= date(dfmat_news$datee) >= 2016-02-01

Это не работает.

datee=(ГГГГ-ММ-ДД) в формате даты

Как установить цель с датой в функции textstat_keyness в пакете R Quanteda? БОЛЬШОЕ СПАСИБО!


person George Nee    schedule 06.09.2020    source источник


Ответы (1)


Проблема в том, что оператор сравнения (>=) пытается сравнить числовое значение с полем dfmat_news$datee в формате даты, и это не дает ожидаемого результата. 2016-02-01 оценивается как 2013, что сравнивается с полями даты, которые сильно отличаются при использовании в качестве целых чисел. Например:

> as.numeric(as.Date("2016-01-01"))
[1] 16801

Поэтому вам следует освежить в памяти операции с датами в R, начиная с ?Ops.Date.

Вот воспроизводимый пример, решающий это так, как вы хотите, используя textstat_keyness(). Вы можете видеть, что это работает с выражением, которое оценивается как логическое.

library("quanteda")
## Package version: 2.1.1

# this has a date field, but the package must be installed
# from https://github.com/quanteda/quanteda.corpora
data(data_corpus_sotu, package = "quanteda.corpora")

hr_dfm <- dfm(tail(data_corpus_sotu, 10)) %>%
  dfm_remove(stopwords("en"))

hr_dfm$Date
##  [1] "2011-01-25" "2012-01-24" "2013-02-12" "2014-01-28" "2015-01-20"
##  [6] "2016-01-12" "2017-02-28" "2018-01-30" "2019-02-05" "2020-02-04"

textstat_keyness(hr_dfm, target = hr_dfm$Date >= "2016-01-01") %>%
  head()
##   feature     chi2            p n_target n_reference
## 1   thank 65.17899 6.661338e-16       85          12
## 2    much 33.17024 8.443305e-09       49           9
## 3   great 28.21748 1.084209e-07       66          22
## 4       , 21.21601 4.103217e-06     1822        1791
## 5    drug 20.95085 4.712182e-06       21           1
## 6  border 20.25901 6.763404e-06       27           4

textstat_keyness(hr_dfm, target = rep(c(FALSE, TRUE), each = 5)) %>%
  head()
##   feature     chi2            p n_target n_reference
## 1   thank 65.17899 6.661338e-16       85          12
## 2    much 33.17024 8.443305e-09       49           9
## 3   great 28.21748 1.084209e-07       66          22
## 4       , 21.21601 4.103217e-06     1822        1791
## 5    drug 20.95085 4.712182e-06       21           1
## 6  border 20.25901 6.763404e-06       27           4
person Ken Benoit    schedule 07.09.2020