如何在数据表中转换长格式和宽格式之间的数据

时间:2015-11-26 01:40:40

标签: r shiny data.table shinydashboard

我想获取kpi列的值并将这些值设置为新数据表的标题。在此应用程序中,我希望管理员创建KPI并让用户填充第二个数据表中的值。

First table

所以我想要一个像bellow这样的表:

New Data Table

server.r

GetTableMetadata <- function() {
   fields <- c(id = "Id", 
               name = "Name", 
               used_shiny = "Used Shiny", 
               r_num_years = "R Years")

   result <- list(fields = fields)
   return (result)
 }
    #display table in wide format
     output$viewresponses<-DT::renderDataTable({

      viewDF<-(as.data.frame(responses))
      viewDF %>% spread(GetTableMetadata()$fields$name,GetTableMetadata()$fields$used_shiny)[-1]
      })

我得到的错误是:

Error : Invalid column specification

1 个答案:

答案 0 :(得分:0)

我使用了库(tidyr)包将长格式转换为宽格式

KPI <- c('cost','time','quality','time','time')
 measurements <- c(1, 2, 3,2,1)
kpi.data <- data.frame(KPI, measurements)

kpi.data如下(长格式):

  KPI measurements
1    cost            1
2    time            2
3 quality            3
4    time            2
5    time            1

通过使用tidyr的扩展功能,长格式将转换为宽格式

kpi.data %>% spread(KPI,measurements)