Как рассчитать долю одного значения в переменной для использования в линейном графике? - PullRequest
0 голосов
/ 22 октября 2018

Я работаю с набором данных Верховного суда.Я пытаюсь визуализировать процент случаев в каждом семестре, которые были решены с разницей в один голос.У меня есть переменные для условий, количество голосов в большинстве и количество голосов в меньшинстве.Наилучшим вариантом для визуализации является линейный график с терминами в качестве оси X и процентом решений, принятых с полем в один голос в качестве оси Y.

library(tidyverse)
library(dplyr)
scdby %>%
  select(majVotes, minVotes, term)

Я создал новую переменную дляполе для голосования.

scdbv %>%
 select(majVotes, minVotes, term) %>%
 mutate(margin = majVotes - minVotes)

С тех пор я чувствую, что перепробовал каждый метод под солнцем, чтобы получить процент голосов с единичной маржей для применения в ggplot для моего графика.Это самый последний метод:

scdbv %>%
  select(majVotes, minVotes, term) %>%
  mutate(margin = majVotes - minVotes) %>%
  mutate(margin1 = if_else(margin == "1", "1", "NA")) %>%
  mutate(margin1 = as.integer(margin1)) %>%
  ggplot(aes(x = term)) +
  geom_line(aes(y = count(margin1) / n()))

, который возвращает:

  no applicable method for 'groups' applied to an object of class "c('integer', 'numeric')"

Я уверен, что есть что-то очень простое, что мне не хватает как это сделать.

1 Ответ

0 голосов
/ 22 октября 2018
scdbv %>%
  select(majVotes, minVotes, term) %>%
  mutate(margin = majVotes - minVotes) %>%
  group_by(term) %>%
  summarize(percentage=sum(margin==1)/n()) %>%
  ggplot(aes(term,percentage)) +
    geom_line()

После создания margin я группирую по term и создаю data.frame, где для каждого термина процент дел с полем один равен summarize d.Затем я строю эти новые данные.Как отмечено в комментарии выше, ваши x и y лучше всего определены уже в вызове ggplot(), и тогда geom_line может содержать только такие вещи, как цвет и вес строки.

Например,Я создал этот поддельный образец:

scdbv<-data.frame(majVotes=c(6,4,5,6,4,5),minVotes=c(5,2,3,3,3,4), term=c(1,1,2,2,3,3))

, и результат (несколько скучный):

enter image description here

Возможно, вы захотитепосмотрите на theme(), чтобы сделать это более привлекательным.

...