Come ottenere un elenco "pulito" dei nomi delle schede dei fogli di lavoro Excel in R con RODBC?
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"?
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....