首页 > 解决方案 > R:如何使用多个过滤器绘制折线图。(R-闪亮 / flexdashboard)

问题描述

R:如何使用多个过滤器绘制折线图。(R-闪亮/ flexdashboard)。

我想从总数中绘制具有平均现值的折线图。员工参加过的活动。

示例: 员工 A 在 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 过滤器的线图。

就像我们在可旋转检查附加图像中获得过滤器一样。

在此处输入图像描述

标签: rchartsshiny

解决方案


从这段代码中我得到了我的结果。

# 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

推荐阅读