0

私はRを初めて使用し、Excelで使用するのも初めてです。.xlsファイル内のすべてのワークシート名(Notes、Weights、Lengths)のリストを取得したいと思います。以下で私が試していることがわかります。問題は、出力の最後に何らかの理由で$ドル記号があり、場合によっては一重引用符で囲まれていることです。

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)[、 "TABLE_NAME"]

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

これらの文字をクリーンアップすることはできますが、引用符の形式に一貫性がないため、これを実行する方法がわかりません。一部のワークブックは「システムテーブル」であり、一部は単なる「テーブル」です。誰かがこれらのワークシートの違いを説明し、「クリーンな」タブ名だけを再作成する方法を教えてもらえますか?

4

2 に答える 2

2

上記の正しい方向への微調整のおかげで、正規表現を使用して、目的の出力(句読点なし)でワークシート名を取得することができました。

gsub("[[:punct:]]","",sqlTables(z)[,"TABLE_NAME"]) 
[1] "Sheet1" "Sheet2" "Sheet3"
于 2012-01-27T10:10:04.690 に答える
0

私はあまり経験がありませんが、クリーンRODBCによる次の出力を意味しますか?

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

それをベクトルに保存すると、でbアクセスできると言いますz[i]。特定のタイプのみが必要な場合はどうでしょうか。

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

確かに不法な……

于 2012-01-17T14:11:19.203 に答える