Процентное соотношение переменной в другой переменной с использованием dplyr и создание коробочного графика со стандартным отклонением - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть этот DF.Я хочу превратить очки в фактор с уровнем <= 1,5 и> 1,5.здесь и далее я хочу проверить, сколько процентов на обоих уровнях имеет значение снпч выше 16. Каждый уровень рассматривается как одна группа, поэтому его следует считать 100%.

glasses <- c(1.0,1.1,1.1,1.6,1.2,1.7,2.2,5.2,8.2,2.5,3.0,3.3,3.0,3.0)
ciss <- c(2,9,10,54,65,11,70,54,0,65,8,60,47,2)
df <- cbind(glasses, ciss)
df

Я хочу, чтобы результат выглядел как

glasses    Percentages ciss > 16
<=1.5      xx%
>1.5       xx%

Я пытался использовать dplyr

dfnew <- df %>% mutate(ani=cut(glasses, breaks=c(-Inf, 1.5, Inf), 
                         labels=c("<=1.5",">1.5")))
dfnew %>% group_by(ani) %>% mutate(perc = ciss>16 / sum(ciss))

И, наконец, я хотел бы продемонстрировать проценты в блокпосте (очки на оси х, проценты поцелуев выше 16 наось у).

1 Ответ

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

попробуйте это.

require(tidyverse)
require(ggplot2)
require(reshape2)

#Input data
glasses = c(1.0,1.1,1.1,1.6,1.2,1.7,2.2,5.2,8.2,2.5,3.0,3.3,3.0,3.0)
ciss = c(2,9,10,54,65,11,70,54,0,65,8,60,47,2)

#Bind in dataframe
df = as.data.frame(cbind(glasses,ciss))

df %>%
   mutate(typglass = if_else(glasses > 1.5,">1.5","<=1.5")) %>%
   filter(ciss > 16) %>%
   group_by(typglass) %>%
   summarise (n = n()) %>%
   mutate(freq = n / sum(n)) %>%
   ggplot() +
   geom_bar(aes(x = typglass, y = freq, fill = typglass), stat = "identity", width = 0.5) +
   theme_classic()

Дает следующий результат: Result

...