我正在尝试将CSV
文件中的列从General
格式转换为R内的h:mm:ss
。
在Excel内部,我运行了函数=CELL("format", cell)
并返回了G
,它对应于General
格式。如果我想在Excel中执行此操作,我会更改格式,D8
为h: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
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')
))
)
)))
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)
})