私は、自分で作成していないデータベースをよく使用します。データベースでは、多くの場合、データは男性 = 1、女性 = 2 のようにコード化されています。変数のレベルのコーディングではなく、実際のレベル名が必要な動的レポートを多数作成しています。私は手動で変数のすべてのレベルを再コーディングしてきましたが、これをより自動化された方法で行う方法が必要です。
コーディングが実際に何であるかを見つけるための鍵は、これが別の表に提供されていることです. そのデータを RODBC 経由で R にインポートすると、テーブルの列 (たとえば) 性別に 1 と 2 が含まれます。私は、いくつかの厄介な特性を持つルックアップ テーブルを介して、それらを男性と女性に変換する方法を見つけようとしています。
この場合、データ ファイルは次のようになります。
ID | 性別 |
---|---|
1 | 1 |
2 | 1 |
3 | 2 |
4 | 1 |
ルックアップテーブルは次のようになります。
名前 | コード | 説明 |
---|---|---|
性別 | 1 | 男 |
性別 | 2 | 女性 |
変数X | 1 | なんでもいい |
変数X | 2 | なんでもいい |
変数X | 3 | なんでもいい |
そこで、データ ファイルの変数名とルックアップ テーブルの Name 列に基づいて 2 つのテーブル間のリンクを使用して、コードを data$Gender で見つかった値と照合することにより、ルックアップ テーブルで Description を検索したいと考えています。これは、変数ごとに実行することで実行できます。
data$Gender<- lookup(data$Gender, subset(lookuptable,Name=="Gender")) (lookup はパッケージ 'epicalc' の関数です)
これはすべて「Name == "Gender"」ビットです...変数名と列の名前の文字列が同じ場合、すべての変数名をループするループを作成することは大きな問題ではありません。ただし、私の場合、列 Name の文字列の名前は、変数の名前と一致しないことがよくあります。では、ルックアップ テーブルが次のような場合はどうすればよいでしょうか。
名前 | コード | 説明 |
---|---|---|
セックス | 1 | 男 |
セックス | 2 | 女性 |
変数X | 1 | なんでもいい |
変数X | 2 | なんでもいい |
変数X | 3 | なんでもいい |
Access では、ルックアップ テーブルと実際のデータを含むテーブルとの間のリンクは、テーブル デザインの [ルックアップ] タブの [行ソース] 行を介して行われます。異なる変数には異なるルックアップ値が必要になるため、この値ソースは変数のレベルで指定されます (私の場合、1 つのルックアップ テーブルで見つけることができます)。
このRowソース行をRにインポートする方法があれば、私の質問は解決されると思います。これにより、(上記の例で) Gender がルックアップテーブルで実際に Sex と呼ばれることが指定されます。
知りたい場合は、Row Source 行 (データ テーブル内の変数ごとに指定できます) は次のようになります。
SELECT lookuptable.Code, lookuptable.Description FROM [lookuptable] WHERE (((lookuptable.Name)="Sex"));
どうすれば問題を解決できますか? Accessの各テーブルから各変数のRow Source行をインポートすると便利だと思いますが(可能であれば)、おそらくそうではありません(わかりません)...
R バージョン 2.15.2 (2012-10-26)
プラットフォーム: i386-w64-mingw32/i386 (32 ビット)
epicalc_2.15.1.0
RODBC_1.3-6