如何在R Shiny应用中嵌入数据清洗代码处理期刊引文CSV数据
期刊引文数据清洗Shiny应用整合方案
以下是直接可用的完整整合代码,已将你已验证的数据清洗逻辑完整嵌入到Shiny应用中:
library(tidyverse) library(shiny) ui <- fluidPage( titlePanel("期刊引文数据清洗工具"), sidebarLayout( sidebarPanel( fileInput('data', '选择CSV文件', accept=c('text/csv', 'text/comma-separated-values,text/plain', '.csv')), tags$hr(), checkboxInput('header', '文件包含表头', TRUE), radioButtons('sep', '分隔符', c(逗号=',', 分号=';', 制表符='\t'), ','), radioButtons('quote', '引用符', c(无='', '双引号'='"', '单引号'="'"), '"'), tags$hr(), downloadButton('downloadData', '下载清洗后文件') ), mainPanel( h3("清洗后结果预览"), tableOutput('contents') ) ) ) server <- function(input, output) { # 读取上传的原始数据 getData <- reactive({ inFile <- input$data if (is.null(inFile)) return(NULL) read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote) }) # 集成你已编写的数据清洗逻辑 getCleanedData <- reactive({ raw_data <- getData() if (is.null(raw_data)) return(NULL) datasubset <- subset(raw_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)) return(citationdata) }) # 预览区域展示清洗后的两列结果 output$contents <- renderTable( getCleanedData() ) # 下载模块导出清洗后的结果 output$downloadData <- downloadHandler( filename = function() { paste("引文清洗结果-", Sys.Date(), ".csv", sep="") }, content = function(file) { write.csv(getCleanedData(), file, row.names = FALSE) }) } shinyApp(ui, server)
功能说明
- 应用完全复用了你之前编写的清洗逻辑,无需调整字段拼接规则,输出结果和你本地运行脚本的结果完全一致
- 上传文件后可直接在预览区确认生成的引文、开放获取状态是否正确
- 导出的文件自动去掉了冗余的行号列,默认文件名带日期标识,避免覆盖旧文件
- 操作逻辑完全可视化,办公室同事无需懂R代码,按照页面提示上传文件、确认预览结果、点击下载即可完成操作
内容的提问来源于stack exchange,提问作者shannon_the_librarian
相关产品推荐
相关产品推荐

