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

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

问题描述:

我对自己没有创建的数据库工作了很多。在数据库中,数据经常被编码,例如男性= 1,女性= 2。我创建了很多动态报告,它们需要实际的级别名称,而不是编码变量的级别。我一直用手记录变量的每个级别,但必须有一种方法以更自动化的方式来完成此操作。查找不起作用查找变量的名称可能有所不同

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

在这种情况下,数据文件看起来是这样的:

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 

所以我想通过查找查找表的说明根据数据文件的变量名和查找表中的名称列,使用两个表之间的链接将代码与数据$ Gender中的值匹配。我可以通过我的每个变量的运行做到这一点:

数据$性别< - 查找(数据$性别,子集(LookupTable中,名称==“性别”)) (查找是一个包中的函数'epicalc')

它的所有关于'Name =='Gender''bit ...如果变量名和列名中的字符串是相同的,那么它不是一个大问题循环遍历所有变量名称。但是,就我而言,Name列中的字符串名称通常与变量的名称不匹配。因此,当查找表是这样的,我们怎么办:

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

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

我想,如果有导入此行源行成R,指定(在上面的例子),性别实际上是所谓的查找表性的方式,我的问题就迎刃而解了。

如果你想知道,行源代码行(可在数据表中的每个变量指定)是这样的:

SELECT lookuptable.Code,lookuptable.Description FROM [ lookuptable] WHERE(((lookuptable.Name)=“Sex”));

所以我想知道是否有人会看到我的问题的解决方案。我猜进口从每个表中访问每个变量的行源线将方便(如果可能),但也许不是(我不知道)...

我希望我自己清楚。我很乐意加入的东西,使事情变得更加清晰......

[R版本2.15。2(2012年10月26日)

平台:I386-W64-的mingw32/I386(32位)

epicalc_2.15.1.0

RODBC_1.3-6

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

例如,你可以在Access中创建一个保存查询名为 “GenderLookup”,其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] 

... whic h会返回....

ID Gender 
1 Male 
2 Male 
3 Female 
4 Male 
+0

啊哈,这听起来可能,但如果我有40个表,每个有30个变量,我必须运行它?问题是,我真的不想在每个表中查找每个变量的lookupname(在这种情况下,性别为变量Gender)... – Luc 2013-04-04 23:15:54

+0

@Luc那么,这当然是一个不可置疑的位置,但真的,是什么是替代品吗?与IT方面的进步一样显着,我们仍然必须告诉计算机'确切地说。什么。至。 Do.'。如果你收到的数据集混乱了,那么你有两种选择:(1)让他们修复它,或者(2)解决它 - 使用Stack Overflow中从朋友那里得到的最好建议 - 加班,如果可以的话。 ;) – 2013-04-04 23:41:07