我经常使用不是我自己创建的数据库。在数据库中,数据通常是编码的,例如男性 = 1,女性 = 2。我创建了很多动态报告,需要实际的级别名称,而不是变量级别的编码。我一直在手动重新编码变量的每个级别,但必须有一种方法以更自动化的方式完成此操作。
找出编码实际是什么的关键是在单独的表格中提供。当我通过 RODBC 将该数据导入 R 时,表格在列(例如)性别中包含 1 和 2。我试图找到一种方法,通过具有一些讨厌特征的查找表将它们转换为男性和女性。
在这种情况下,数据文件看起来像:
ID | 性别 |
---|---|
1 | 1 |
2 | 1 |
3 | 2 |
4 | 1 |
和查找表是这样的:
姓名 | 代码 | 描述 |
---|---|---|
性别 | 1 | 男性 |
性别 | 2 | 女性 |
变量X | 1 | 任何 |
变量X | 2 | 任何 |
变量X | 3 | 任何 |
因此,我想根据数据文件的变量名称和查找表中的名称列,使用两个表之间的链接将代码与 data$Gender 中找到的值进行匹配,从而在查找表中查找描述。我可以通过为每个变量运行来做到这一点:
data$Gender<-lookup(data$Gender, subset(lookuptable,Name=="Gender")) (查找是包'epicalc'中的一个函数)
'Name == "Gender"' 位的全部内容...如果变量名称和列 Name 中的字符串相同,则创建一个遍历所有变量名称的循环并不是一个大问题。但是,就我而言,名称列中的字符串名称通常与变量名称不匹配。那么当查找表是这样的时候我们该怎么办:
姓名 | 代码 | 描述 |
---|---|---|
性别 | 1 | 男性 |
性别 | 2 | 女性 |
变量X | 1 | 任何 |
变量X | 2 | 任何 |
变量X | 3 | 任何 |
在 Access 中,查找表和包含实际数据的表之间的链接是通过表设计中“查找”选项卡中的“行源”行。此行源是在变量级别指定的,因为不同的变量将需要不同的查找值(在我的情况下可以在 1 个查找表中找到)。
我想如果有一种方法可以将此 Row 源行导入到 R 中,我想我的问题将得到解决,它指定(在上面的示例中)在查找表中 Gender 实际上被称为 Sex。
如果您想知道,Row Source 行(可以为数据表中的每个变量指定)如下所示:
选择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-bit)
Epicalc_2.15.1.0
RODBC_1.3-6