R shiny로 데이터의 기초 분석용 앱 작성①

15534 단어 R기초 분석Shiny

소개



R shiny로 앱을 만들어 보았다(자세한 것은 여기 )가 너무 심플했기 때문에, 좀 더, 복잡한 것을 만들고 싶다고 생각해 왔다. 내용으로서는 csv 파일을 읽어 데이터의 기초 분석(통계량의 계산, 시각화 등)을 자동으로 실시할 수 있는 어플을 개발하고 싶다. 길어질 것 같기 때문에, 테마별로 나누어 기사를 써 가고 싶다.

사용할 데이터 준비



우선은 이 기사 로 작성한 사람의 성별, 신장, 체중, 혈액형이 있는 데이터를 취급하고 싶다. 기사대로 1000명분의 데이터를 작성하면, 그것을 csv 파일에 출력한다.
> str(df)
'data.frame':   1000 obs. of  4 variables:
 $ SEX   : chr  "female" "male" "male" "male" ...
 $ HEIGHT: num  154 178 163 176 156 ...
 $ WEIGHT: num  48 70.8 48.2 76.4 40.9 ...
 $ BLOOD : chr  "O" "A" "A" "O" ...
> write.csv(df, "./data.csv")

이것으로 사용하는 데이터를 준비할 수 있었다.

파일 로드 및 표시



우선 기초가 되는 파일을 읽어 표시하는 앱을 작성한다.

app.R
# Load packages ----
library(shiny)


# Source helpers ----


# User interface ----
ui <- fluidPage(
  titlePanel("Basic analysis"),

  sidebarLayout(
    sidebarPanel(
      fileInput("file",
                label = "File input",
                accept = c("text/csv"),
                multiple = FALSE,
                width = "80%")
    ),

    mainPanel(
      dataTableOutput("outFile"),
    )
  )
)

# Server logic
server <- function(input, output) {

  inFile <- reactive({
    tmp <- input$file
    if (is.null(tmp)){
      return(NULL)
    } else {
      df <- read.csv(tmp$datapath, header=TRUE)
      return(df)
    }
  })

  output$outFile <- renderDataTable({
    data.frame(inFile())
  })

}

# Run the app
shinyApp(ui, server)

이 작업을 수행하고 data.csv를 로드하면,



데이터 테이블을 표시 할 수있었습니다.

탭 만들기



mainPanel에 tabsetPanel을 추가하여 다시 씁니다. 탭마다 데이터, 통계량, 시각화를 바꿀 수 있도록 작성한다. 탭 내용에 대해서는 다음 기사에서 쓰려고 한다.

app.R
# Load packages ----
library(shiny)


# Source helpers ----


# User interface ----
ui <- fluidPage(
  titlePanel("Basic analysis"),

  sidebarLayout(
    sidebarPanel(
      fileInput("file",
                label = "File input",
                accept = c("text/csv"),
                multiple = FALSE,
                width = "80%")
    ),

    mainPanel(
      tabsetPanel(type = "tabs",
                  tabPanel("Data", dataTableOutput("outFile")),
                  tabPanel("Statistic", h1("Statistics value")),
                  tabPanel("Visualize", h1("Plot"))
      )

    )
  )
)

# Server logic
server <- function(input, output) {

  inFile <- reactive({
    tmp <- input$file
    if (is.null(tmp)){
      return(NULL)
    } else {
      df <- read.csv(tmp$datapath, header=TRUE)
      return(df)
    }
  })

  output$outFile <- renderDataTable({
    data.frame(inFile())
  })

}

# Run the app
shinyApp(ui, server)



결론



다음 기사에서는 탭의 하나인 기초 통계량의 산출과 표시를 실시하고 싶다.

R shiny로 데이터의 기초 분석용 앱 작성②

좋은 웹페이지 즐겨찾기