0

This script outputs excel spreadsheets of different region. However, since I included a column "Later", changed the corresponding template to also include the column "Later" and increased the number on this line "df <- subset(clist[,c(1:18, 20:29)" from 28 to 29 (given the increased column). The output on the column "group" has come back with its content, but with quotation mark and some instance with CHAR(10). Is there anyway I can edit this script to have column "group" outcome its content without the quotation marks. Please help!! help! I have struggled with this since. See script below

NB changes made to the original script are as follows

  • inclusion of later in the sqlcode
  • changing the df <- subset(clist[,c(1:18, 20:28)" to df <- subset(clist[,c(1:18, 20:29)
  • Changing the second df <- subset(clist[,c(1:17, 19:28)] to df <- subset(clist[,c(1:18, 20:29)]
#####Constants#####

requiredpackages <- c("XLConnect", "RPostgreSQL", "svDialogs", "getPass")
reqpackages <- function(requiredpackages){
  for( i in requiredpackages ){
    if( ! require( i , character.only = TRUE ) ) {
      install.packages( i , dependencies = TRUE )
      library( i , character.only = TRUE )
    }
  }
}

# set the version to 1.0.5

packageurl <- "https://cran.r-project.org/src/contrib/Archive/XLConnect/XLConnect_1.0.5.tar.gz"
install.packages(packageurl, repos=NULL, type="source")

library(XLConnect)
library(RPostgreSQL)
library(svDialogs)
library(getPass)

source("N:/Ana/Code/Analysiss/Rational/R SQL working/postgresql-avd.R")

#####Retrieve data from analysis server#####

sqlcode <- paste("SELECT concat_ws(';',datacompletion,sortprovider) as datacompletion,ba,outstandingdata,provider,summary,
m,m_hos,m_sur,m_for,m_dob,ed,
bkhos,delhos,
pregnancy,b_d,
b,b_na,
group,groupsw,later,estimated,
screening,date,screening2,
booking,city,use,con,water
FROM common.etl_chasing
where ((date::text like '%",tperiod,"%' or date::text like '%",cperiod,"%')
and (anomalygroup like '%Down%' or group like '%Edwards%' or group like '%Patau%'))
or eddfyear like '%", fperiod,"%' or cleanyear like '%", cperiod, "%'", sep='')

con <- createConnection()
clist <- dbGetQuery(con, sqlcode)
dbDisconnect(con)

#####Create new folder on PID drive to output chasing lists to#####

dirname <- paste("P:/Data/Antenatal/Testing/", Sys.Date(),sep='')
dir.create(dirname)

#####Export CSV of all data#####

write.csv(clist,paste(dirname,"/masterlist.csv",sep=''))

#####Copy template for all individual providers#####

sortproviders <- unique(clist$sortprovider)
inpath <- "P:/Data/National/Antenatal/Template17b.xlsx"
for (i in seq_along(sortproviders)) {
  outpath <- paste(dirname,"/",sortproviders\[i\]," AN LIST.xlsx", sep='')
  file.copy(from = inpath, to = outpath)
}

#####Populate templates for individual providers#####

swpatterns <- c("68 - ", "70 - ", "72 - ", "73 - ", "84 - ", "93 - ", "94 - ", "95 - ", "96 - ", "99 - ")

#grepl(paste(swpatterns, collapse = "|"), sortproviders\[1\])
#otherpatterns \<- c("72 - ", "96 - ", "73 - ", "93 - ", "94 - ", "72 - ", "99 - ")
#swsortproviders \<- unique(grep(paste(swpatterns, collapse = "|"), sortproviders, value = TRUE))
#restsortprividers \<- unique(grep(paste(otherpatterns, collapse = "|"), sortproviders, value = TRUE))

for (i in seq_along(sortproviders)) {
  outpath \<- paste(dirname,"/",sortproviders\[i\]," AN LIST.xlsx", sep='')
  if (grepl(paste(swpatterns, collapse = "|"), sortproviders\[i\]) == FALSE) {
    df <- subset(clist[,c(1:18, 20:29)], sortprovider == sortproviders[i])
    dfformulacol <- as.vector(df$anomalygroup)
    df <- cbind(df, df)
    XLConnect::writeWorksheetToFile(outpath, df, sheet = "trust list", startRow = 4, header = FALSE, styleAction = XLC$"STYLE_ACTION.NONE")
    
    wb <- loadWorkbook(filename = outpath, create = FALSE)
    
    for (j in seq_along(dfformulacol)) {
      setCellFormula(wb, "trust list", j+3, 18, dfformulacol[j])
    }
    
    for (k in seq_along(dfformulacol)) {
      setCellFormula(wb, "trust list", k+3, 45, dfformulacol[k])
    }
    saveWorkbook(wb)
    rm(wb)
  } else {
    df <- subset(clist[,c(1:18, 20:29)], sortprovider == sortproviders[i])
    df <- cbind(df, df)
    XLConnect::writeWorksheetToFile(outpath, df, sheet = "trust list", startRow = 4, header = FALSE, styleAction = XLC$"STYLE_ACTION.NONE")
    
    wb <- loadWorkbook(filename = outpath, create = FALSE)
    saveWorkbook(wb)
    rm(wb)
  }
rm(df)
xlcFreeMemory()
}

#####################################
MrFlick
  • 195,160
  • 17
  • 277
  • 295
  • 3
    Welcome to SO, Yok Man! Three requests: (1) Please reduce your code. It seems that the issue is due to either the SQL query, the Excel work, or solely within R work. Isolate where the problem _starts_, and remove all other unrelated portions. (2) Please read how to format questions better, namely code blocks: https://stackoverflow.com/editing-help and https://meta.stackexchange.com/a/22189. (3) Please make this question _reproducible_ by including sample data. See https://stackoverflow.com/q/5963269, [mcve], and https://stackoverflow.com/tags/r/info. – r2evans Dec 12 '22 at 17:24

0 Answers0