如何将常规格式单元格转换为h:mm:ss in R?

时间:2016-01-19 15:44:26

标签: r excel csv

我正在尝试将CSV文件中的列从General格式转换为R内的h:mm:ss

在Excel内部,我运行了函数=CELL("format", cell)并返回了G,它对应于General格式。如果我想在Excel中执行此操作,我会更改格式,D8h:mm:ss

我正在尝试在R中进行此转换,而不是在Excel中进行转换。

当我的CSV文件上传到R时,时间列的格式为factor

当我跑步时:

uploadedFile1$Time <- as.POSIXct(strptime(uploadedFile1$Time,"%H:%M:%S"))
uploadedFile1$ctime <- strptime(paste(uploadedFile1$Time), "%Y-%m-%d %H:%M:%S")

Time列的类返回为:"POSIXct" "POSIXt"

但是,当我尝试使用Dygraph绘制图表时,错误就是它cannot calculate the periodicity of 1 observation

但这里是我困惑的地方: 当我手动更改Excel内部的格式时,上传文件时的时间列的类也是factor,并且在运行两行代码后也是"POSIXct" "POSIXt"

csv文件位于:https://drive.google.com/file/d/0Bzg7bDcyZobbc1Zoc0VoN3ZzSmM/view?usp=sharing

ui.R

library(xts)
library(shiny)
library(dygraphs)

shinyUI(fluidPage(
  navbarPage("Data Graph",
tabPanel("Upload a CSV File:",
                      sidebarLayout(
                        sidebarPanel(
                          fileInput('file1', 'Choose CSV File',
                                    accept=c('text/csv', 
                                             'text/comma-separated-values,text/plain', 
                                             '.csv')),
                          selectInput("uploadChannels1", label = "Choose a Temp. Rise Location",
                                      choices = NULL),
                          fileInput('file2', 'Choose CSV File',
                                    accept=c('text/csv', 
                                             'text/comma-separated-values,text/plain', 
                                             '.csv')),
                          selectInput("uploadChannels2", label = "Choose a Temp. Rise Location",
                                      choices = NULL),
                          tags$hr(),
                          checkboxInput('header', 'Header', TRUE),
                          radioButtons('sep', 'Separator',
                                       c(Comma=',',
                                         Semicolon=';',
                                         Tab='\t'),
                                       ',')

                        ),
                        mainPanel(
                              dygraphOutput('graph')
                        ))



                        )

                               )))

server.R

observeEvent(uploadedFile1, {
    updateSelectizeInput(session, 'uploadChannels1', choices = names(uploadedFile1))
  })
  observeEvent(uploadedFile2, {
    updateSelectizeInput(session, 'uploadChannels2', choices = names(uploadedFile2))
  })
uploadedFile1 <- reactive({
    validate(need(input$file1, FALSE)) # This is like a better "if (is.null(input$file1)) return(NULL)"

     uf1 <- read.csv(input$file1$datapath, header=TRUE, stringsAsFactors=FALSE)


  })
observeEvent(uploadedFile1(), {
    updateSelectizeInput(session, 'uploadChannels1', choices = names(uploadedFile1()))
  })
  observeEvent(uploadedFile2(), {
    updateSelectizeInput(session, 'uploadChannels2', choices = names(uploadedFile2()))
  })

  output$graph <- renderDygraph({

    # Clean up the loaded CSV File, convert Time column to a Time Object for Dygraph.
    uploadedFile1 <- uploadedFile1()
    uploadedFile2 <- uploadedFile2()

    uploadedFile1$Time <- as.POSIXct(strptime(uploadedFile1$Time,"%H:%M:%S"))
    uploadedFile2$Time <- as.POSIXct(strptime(uploadedFile2$Time,"%H:%M:%S"))

    uploadedFile1$ctime <- strptime(paste(uploadedFile1$Time), "%Y-%m-%d %H:%M:%S")
    uploadedFile2$ctime <- strptime(paste(uploadedFile2$Time), "%Y-%m-%d %H:%M:%S")

  uploadedFile2 <- reactive({
    validate(need(input$file2, FALSE)) # This is like a better "if (is.null(input$file2)) return(NULL)"
selectedInput1 <- input$uploadChannels1
    selectedInput2 <- input$uploadChannels2
    component5 <- uploadedFile1[, selectedInput1]
    component6 <- uploadedFile2[, selectedInput2]
    cbinded <- cbind(component5, component6)

        xts(cbinded, uploadedFile1$Time, uploadedFile2$Time)  %>% 
      dygraph()

    })

})

     uf2 <- read.csv(input$file2$datapath, header=TRUE, stringsAsFactors=FALSE)


  })

0 个答案:

没有答案