Come ottenere un elenco "pulito" dei nomi delle schede dei fogli di lavoro Excel in R con RODBC?

StackOverflow https://stackoverflow.com/questions/8894381

  •  29-10-2019
  •  | 
  •  

Domanda

Sono nuovo in R e ancora più nuovo nell'usarlo con Excel.Desidero ottenere un elenco di tutti i nomi dei fogli di lavoro (Note, Pesi, Lunghezze) in un file .xls.Puoi vedere cosa sto provando di seguito: il problema è che l'output ha un simbolo $ dollaro alla fine per qualche motivo e talvolta è anche circondato da virgolette singole.

FileToImport <- "C:\\folder\\filetoimport.xls"

z <- odbcConnectExcel(FileToImport, readOnly = TRUE)

sqlTables(z)
TABLE_CAT TABLE_SCHEM         TABLE_NAME   TABLE_TYPE REMARKS
1 C:\\folder\\filetoimport.xls <NA>     Notes$ SYSTEM TABLE    <NA>
2 C:\\folder\\filetoimport.xls <NA> 'Weights$'        TABLE    <NA>
3 C:\\folder\\filetoimport.xls <NA> 'Lengths$'        TABLE    <NA>

sqlTables(z)[,"NOME_TABELLA"]

[1] "Notes$"             "'Weights$'" "'Lengths$'"

Potrei provare a ripulire questi caratteri, ma non so davvero come procedere poiché il formato delle virgolette è incoerente: alcune cartelle di lavoro sono "TABELLE DI SISTEMA" e altre sono solo "TABELLE".Qualcuno potrebbe spiegare qual è la differenza tra questi fogli di lavoro e darmi un'idea di come ricreare solo i nomi delle schede "puliti"?

È stato utile?

Soluzione

Grazie alla spinta di cui sopra nella giusta direzione, sono riuscito a utilizzare espressioni regolari per ottenere i nomi dei fogli di lavoro nell'output desiderato (senza punteggiatura).

gsub("[[:punct:]]","",sqlTables(z)[,"TABLE_NAME"]) 
[1] "Sheet1" "Sheet2" "Sheet3"

Altri suggerimenti

Non ho molta esperienza con RODBC ma intendi il seguente output con pulito?

 data.frame(sqlTables(z))$TABLE_NAME
 [1] "Sheet1$"  "Sheet2$"  "Sheet3$"  "ZRDaten1"

se lo salvi in ​​un vettore, dillo b puoi accedervi con z[i].Se ti serve solo un certo tipo, che ne dici di:

 na.omit(ifelse(data.frame(sqlTables(z))$TABLE_TYPE=='SYSTEM TABLE', data.frame(sqlTables(z))$TABLE_NAME, NA))
 [1] "Sheet1$" "Sheet2$" "Sheet3$"

sicuramente poco elegante....

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top