Это просто и является частью базового quanteda решения о дизайне для передачи через ваши документы от объекта корпуса к "нисходящим" объектам, таким как dfm. Вы можете решить эту проблему, используя dfm_group()
с помощью myday
docvar и затем взвешивая.
Во-первых, чтобы сделать ваш пример полностью воспроизводимым, и назначить объекту dfm имя:
library("quanteda")
## Package version: 1.4.3
library("tibble")
library("lubridate")
dfmat <- tibble(
text = c(
"a grande latte with soy milk",
"black coffee no room",
"latte is a latte",
"coke, diet coke"
),
myday = c(ymd("2018-01-01", "2018-01-01", "2018-01-03", "2018-01-03"))
) %>%
corpus() %>%
tokens() %>%
dfm()
Теперь для получения желаемого результата достаточно двух операций.
dfmat2 <- dfm_group(dfmat, groups = "myday") %>%
dfm_weight(scheme = "prop")
dfmat2
## Document-feature matrix of: 2 documents, 14 features (42.9% sparse).
## 2 x 14 sparse Matrix of class "dfm"
## features
## docs a grande latte with soy milk black coffee no room is
## 2018-01-01 0.100 0.1 0.10 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0
## 2018-01-03 0.125 0 0.25 0 0 0 0 0 0 0 0.125
## features
## docs coke , diet
## 2018-01-01 0 0 0
## 2018-01-03 0.25 0.125 0.125
dfmat2[, "coffee"]
## Document-feature matrix of: 2 documents, 1 feature (50.0% sparse).
## 2 x 1 sparse Matrix of class "dfm"
## features
## docs coffee
## 2018-01-01 0.1
## 2018-01-03 0