Р: Как построить линейный график с несколькими фильтрами. (R-блестящий / flexdashboard) - PullRequest
1 голос
/ 16 марта 2020

R: Как построить линейный график с несколькими фильтрами. (R-блестящий / flexdashboard).

Я хочу построить линейный график со средним текущим значением из общего числа. событий, в которых приняли участие сотрудники.

Пример: Всего событий для сотрудника А в 01/2019 - 4, где он присутствовал только в 1, тогда он должен показывать 25% результата за этот месяц. ((1/4) * 100)%

Вот примерные данные, но на самом деле их более 100, поэтому результат должен быть в виде кода цвета линии по имени сотрудника.

Набор данных как:

Employee        Status          Month_Yr
A               PRESENT         01/2019
C               PRESENT         01/2019
B               PRESENT         01/2019
C               PRESENT         02/2019
D               PRESENT         03/2019
A               PRESENT         01/2019
B               PRESENT         03/2019
C               PRESENT         01/2019
B               ABSENT          01/2019
D               ABSENT          01/2019
A               ABSENT          01/2019
C               PRESENT         02/2019
B               PRESENT         01/2019
A               PRESENT         02/2019
A               ABSENT          02/2019
D               ABSENT          03/2019
C               PRESENT         01/2019
C               ABSENT          01/2019
C               ABSENT          01/2019
A               ABSENT          02/2019
C               ABSENT          04/2019
B               ABSENT          01/2019

Код, который я пробовал:

sub_data5 <-mutate(sub_data5, ontime = ifelse(sub_data5$Status=="PRESENT","Y","N"))


sub_data5 <- sub_data5 %>% 
    count(year_month, Employee, ontime,year,Month) %>% 
    group_by(year_month, Employee,year,Month) %>% 
    mutate(Prop = (n/sum(n))*100)

sub_data5$`Prop`  <- as.integer(sub_data5$`Prop`)

ggplot(sub_data5, aes(x=year_month, y=Prop, group=Employee, color=Employee)) +
  geom_line()

Но я хочу отобразить линейный график с фильтрами year_month, Employee, year, Month .

Как мы получаем фильтры в прикрепленной проверке rpivottable Image.

enter image description here

1 Ответ

0 голосов
/ 18 марта 2020

Из этого кода я получил свой результат.

# Calculate total count of status and add new column for its percentage value.
sub_data5 <- sub_data5 %>% 
    count(Month_yr, Employee, Status) %>% 
    group_by(Month_yr, Employee) %>% 
    mutate(Percent = (n/sum(n))*100)

# Convert Percentage decimal to string 
sub_data5$`Percent `  <- (as.integer(sub_data5$`Percent`)+" %")

# Drop row values with ABSENT
sub_data5<-sub_data5[!(sub_data5$Status=="ABSENT"),]

#Employee can't use in plot because it's used as grouping so convert DF in to new DF
sub_data10 <- as.data.frame(sub_data5)

# Plot line chart.
plo <- ggplot(data=sub_data10, aes(x=Month_yr, y=Precent, group=Employee, colour=Employee)) +
    geom_line() +
    geom_point()

fig <- ggplotly(plo)

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