【问题标题】:Data manipulation for user uploaded data - Shiny用户上传数据的数据操作 - Shiny
【发布时间】:2018-06-20 18:18:07
【问题描述】:

我有一个数据框,用于查看每个观察次数的总体失败百分比以及过去 30 天的百分比。可能有一种更有说服力的方法来做到这一点,但这就是我想出的,它产生了我想要的最终结果。

a$FAIL<-ifelse(a$OPERATION_STATUS %in% "FAIL", 1, 0)
cc<-as.data.frame((table(a$CRIT_CODE))) #Dataframe with frequency  of each crit code
cf<-aggregate(FAIL~CRIT_CODE,a,sum) #Total number of fails based  on crit codes
(cc<-cbind(cc[,],cf[,2]))
names(cc)<-c("CRIT_CODE", "Freq", "FAIL") #Change column names
(cc<-transform(cc, Percent=FAIL/Freq*100))

last30<-a[which(a$DATE>=(Sys.Date()-30)),]
last<-as.data.frame((table(last30$CRIT_CODE))) #Dataframe with frequency of each crit code
lastfails<-aggregate(FAIL~CRIT_CODE,last30,sum) #Total number of fails based on crit codes
(last<-cbind(last[,],lastfails[,2]))
names(last)<-c("CRIT_CODE", "Freq", "FAIL") #Change column names
(last<-transform(last, Percent=FAIL/Freq*100))

rates<-merge(critcode[,c(1,4)], last[,c(1,4)], by="CRIT_CODE")
rates$Percent.x<-round(rates$Percent.x, 2)
rates$Percent.y<-round(rates$Percent.y, 2)
library(gridExtra)
grid.table(rates, cols=c("Area", "Overall Percent", "30 Day Percent"))

我想将其合并到一个闪亮的应用程序中,用户可以在其中上传自己的数据集(具有相同的标题),因此可以持续更新 30 天的百分比。我是 Shiny 的新手,很难弄清楚如何实现这段代码。在浏览 Shiny 教程和其他 StackOverflow 问题时,似乎很多人使用多个响应式语句来操作数据。我觉得必须有更好的方法,因为这似乎需要一个表的大量反应性语句。有没有更好的建议来将它融入 Shiny 中?

【问题讨论】:

    标签: r shiny data-manipulation


    【解决方案1】:

    使用 data.table 包进行以下工作:

    setDT(audit)
    audit[,group_i := DATE >=Sys.Date()-30]
    rates <- audit[, .(
        'Overall Percent' = round(sum(OPERATION_STATUS == 'FAIL') / .N * 100, 2),
        '30 Day Percent' = round(sum(OPERATION_STATUS[group_i] == 'FAIL') / sum(group_i) * 100, 2)
        ),
        keyby = .(Area = CRIT_CODE)]
    

    【讨论】:

      猜你喜欢
      • 2019-04-07
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 2019-04-17
      • 2018-01-26
      • 2020-08-06
      • 2017-04-14
      相关资源
      最近更新 更多