查找不起作用查找变量的名称可能不同

时间:2013-04-04 02:45:18

标签: r ms-access lookup rodbc

我使用自己没有创建的数据库做了很多工作。在数据库中,数据经常被编码,例如, male = 1,female = 2.我创建了很多动态报告,这些报告需要实际的级别名称,而不是变量级别的编码。我一直在手动重新编码变量的每个级别,但必须有一种方法以更自动化的方式执行此操作。

找出编码实际是什么的关键是在单独的表格中提供。当我通过RODBC将数据导入R时,表格中包括1和2(例如)Gender。我试图找到一种方法,通过具有一些讨厌特征的查找表将它们转换为男性和女性。

在这种情况下,数据文件看起来像:

ID   Gender
1      1
2      1
3      2
4      1

并且查找表会这样:

Name        Code   Description
Gender       1     Male
Gender       2     Female
VariableX    1     whatever
VariableX    2     whatever
VariableX    3     whatever

所以我想在查找表中查找说明,方法是将代码与data $ Gender中的值匹配,使用两个表之间的链接,基于数据文件的变量名和查找中的Name列-表。我可以通过运行每个变量来执行此操作:

  

data $性别< - 查询(数据$性别,子集(查询表,姓名==“性别”))   (查找是包'epicalc'中的函数)

关于这个'Name ==“Gender”'位...如果变量名和列Name中的字符串相同,那么制作一个遍历所有变量名的循环不是一个大问题。但是,就我而言,列Name中的字符串名称通常与变量的名称不匹配。那么查找表如下所示我们该怎么做:

Name        Code   Description
Sex          1     Male
Sex          2     Female
VariableX    1     whatever
VariableX    2     whatever
VariableX    3     whatever

在Access中,查找表和包含实际数据的表之间的链接是通过表设计中“查找”选项卡中的“行源”行。此行源在变量级别指定,因为不同的变量将需要不同的查找值(在我的情况下可以在1个查找表中找到)。

如果有一种方法可以将此Row源行导入R,我想我的问题将得到解决,R指定(在上面的示例中)Gender在查找表中实际上称为Sex。

如果您想知道,行源行(可以为数据表中的每个变量指定)将如下所示:

  

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

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,你面临的主要困难是你有包含多个变量编码的查找表,有时你必须“调整”变量名称才能匹配。解决这两个问题的一种方法是在Access中创建保存的查询,这些查询可以作为每个变量的单独“查找(伪)表”。

例如,您可以在名为“GenderLookup”的Access中创建一个保存的查询,其SQL代码为

SELECT [Code], [Description] AS Gender
FROM [MasterLookupTableName]
WHERE [Name]="Gender"

...或...

SELECT [Code], [Description] AS Gender
FROM [MasterLookupTableName]
WHERE [Name]="Sex"

...(取决于上面的例子实际上是这种情况),然后将该查询用作JOIN中的“查找表”,例如,

SELECT [DataTable].[ID], [GenderLookup].[Gender]
FROM [DataTable] INNER JOIN [GenderLookup]
    ON [DataTable].[Gender] = [GenderLookup].[Code]

......会回来......

ID  Gender
1   Male
2   Male
3   Female
4   Male