Составьте список, используя R - PullRequest
0 голосов
/ 03 декабря 2018

Я хотел бы знать, как построить список.

Теперь у меня есть список

[[1977]] keyword1, keyword2, keyword3, ...
[[1978]] keyword2, keyword5, ...
...
[[2018]] keyword1, keywords3, ...

length(mylist) = 2018
lengts(mylist) = 0,0,0,0,0,......
dput(head(mylist)) = list(NULL, NULL, NULL, NULL, NULL, NULL)

И я хотел бы построить его с использованием частот ключевых слов в качестве оси Yи 1977 ~ 2018 гг. как ось X.

Таким образом, в нем должно быть много строк, равных количеству ключевых слов.У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Вы, вероятно, можете использовать data.table::rbindlist() для создания длинной таблицы данных.Суммируем в таблицу частот для построения с ggplot -функциями

# using example data from @zx8754's answer.

library( data.table )
library( ggplot2 )

dt <- data.table::rbindlist( lapply( myList, as.data.table ), idcol = "year" )
dt <- dt[, .N, by = list(year, V1) ]
ggplot( data = dt, aes( x = year, y = N, group = V1, fill = V1 )) + geom_col( color = "black" )

enter image description here

0 голосов
/ 03 декабря 2018

Попробуйте этот пример:

# example data
set.seed(1); myList <- list(sample(LETTERS[1:3], 10, replace = TRUE),
                            sample(LETTERS[1:3], 10, replace = TRUE),
                            sample(LETTERS[1:3], 10, replace = TRUE),
                            sample(LETTERS[1:3], 10, replace = TRUE),
                            sample(LETTERS[1:3], 10, replace = TRUE))
names(myList) <- 1977:1981


library(ggplot2)
library(dplyr)

plotDat <- stack(myList) %>% 
  mutate(myYears = as.numeric(as.character(ind)),
         myWords = values) %>% 
  group_by(myYears, myWords) %>% 
  summarise(myCount = n())

ggplot(plotDat, aes(x = myYears, y = myCount, col = myWords)) +
  geom_line() 

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...