You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:45:04