График временных рядов для взвешенных частот символьной переменной в R - PullRequest
0 голосов
/ 03 декабря 2018

Давайте предположим, что этот набор данных:

answer <- c("a", "b", "b", NA, "a", "b", "a", "b", "a", NA, "a", "b")
weights <- c(0.1, 0.3, 0.2, 1.1, 0.3, 0.8, 0.9, 1.5, 0.9, 0.2, 0.15, 0.13)
year <- c(2001, 2005, 2010)
data <- cbind(answer,weights,year)

Я хочу иметь график временных рядов, который показывает взвешенные частоты возможных ответов (a и b).NA следует опустить.
Есть идеи, как этого добиться?Заранее спасибо!

Если мне нужно переписать вопрос, пожалуйста, дайте мне знать.Я новичок в сообществе ...

1 Ответ

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

Добро пожаловать на ТАК!Вы можете управлять им с помощью dplyr, чтобы привести в порядок данные, и ggplot2, чтобы построить их, все они обернуты в цепочку dplyr с оператором magrittr %>% (труба).Читайте обо всех этих пакетах, они очень полезны.

library(dplyr)
library(ggplot2)

data %>%
  # remove NAS
  filter(!is.na(answer)) %>%    
  # group by  
  group_by(answer, year) %>%
  # add a column made by the sums per year/answer: you can use other functions
  summarise(weights = sum(weights)) %>%
  # now the plot
  ggplot(.,aes(x = sprintf("%.0f", year),   # sprintf to remove decimal to years
               y = weights,                 
              colour = answer,
              group = answer)) + 
 geom_line()  +                             # add lines
 labs(                                      # rename x axis
       x = "summed weights"
      )

enter image description here

PS

Я использовалdata.frame вместо cbind для данных, что-то вроде:

data <- data.frame(answer,weights,year)
...