我在图书馆工作,我们会定期从数据库中获取csv格式的期刊文章信息(标题、作者、摘要等),它有67个列,每个列名都是相同的。每行都包含不同期刊文章的引用信息。目标是创建一个电子表格,其中一列是完整引文(通过将不同的列如作者和出版日期粘贴在一起)并在另一列中设置开放访问状态,并删除无关的列。我编写了一些R代码,可以自动去除不必要的列并将其余部分粘贴到一起,当时只有我自己在整理数据时处理得很好。但我的主管希望办公室里的其他人也能够执行这项工作,并要求我创建一个R Shiny应用程序来完成此任务。我以前没有创建过这样的应用程序。虽然我已经写好了上传和下载部分的脚本代码,但我遇到了问题,无法使清理部分正常工作。以下是我已经完成的清理代码,在应用程序之外运行正常。
library(tidyverse)
#data is the name of the csv after I load it
datasubset= subset(data, select = c(Author.Full.Names,Article.Title,Source.Title,Volume,Issue,Article.Number,DOI,Publication.Date,Publication.Year,Open.Access.Designations))
datasubset$Full.Date <- paste(datasubset$Publication.Date, datasubset$Publication.Year)
datasubset$Citation <- paste("Author(s): ",datasubset$Author.Full.Names,". Title:",datasubset$Article.Title,". Volume:",datasubset$Volume,". Issue:",datasubset$Issue,". Article Number:",datasubset$Article.Number,". DOI:",datasubset$DOI,". Published:",datasubset$Full.Date)
citationdata= subset(datasubset, select=c(Citation,Open.Access.Designations))
这是我为Shiny应用程序做的工作。我试过从多个不同的教程(包括这里的其他问题)中以多种方式放置清理代码部分,但我还没有完全掌握。
library(tidyverse)
library(shiny)
ui <- fluidPage(
fluidPage(
titlePanel("Uploading Files"),
sidebarLayout(
sidebarPanel(
fileInput('data', 'Choose CSV File',
accept=c('text/csv',
'text/comma-separated-values,text/plain',
'.csv')),
tags$hr(),
checkboxInput('header', 'Header', TRUE),
radioButtons('sep', 'Separator',
c(Comma=',',
Semicolon=';',
Tab='\t'),
','),
radioButtons('quote', 'Quote',
c(None='',
'Double Quote'='"',
'Single Quote'="'"),
'"'),
downloadButton('downloadData', 'Download')
),
mainPanel(
tableOutput('contents')
)
)
)
)
server <- function(input, output) {
getData <- reactive({
inFile <- input$data
if (is.null(input$data))
return(NULL)
read.csv(inFile$datapath, header=input$header, sep=input$sep,
quote=input$quote)
})
output$contents <- renderTable(
getData()
)
output$downloadData <- downloadHandler(
filename = function() {
paste("data-", Sys.Date(), ".csv", sep="")
},
content = function(file) {
write.csv(getData(), file)
})
}
shinyApp(ui, server)
如果有人能指引我如何将两者合并,我将不胜感激。理想情况下,某人可以从数据库下载他们所需的csv文件,上传到应用程序进行清理,然后下载经过清理的版本,该版本仅包含两列-引文和开放访问状态。同时,这是我在这里的第一篇帖子,请告诉我是否遗漏了任何相关内容!谢谢!
tableOutput
,您是希望在表格显示之前进行清洁处理吗?还是该表格显示原始数据,只有在您要求下载后才会清理数据?无论哪种方式,您都已经有了一个非常好的开端。 - Silentdevildoll