快速通往"翻译"使用查找表在R中的一列变量

时间:2015-07-23 20:20:19

标签: r dataframe

在我的数据分析中开始使用R,但仍然是一个相对新手。我有一个如下所示的数据框:

位置

loc IDnum
100000001 1
100000009 7
100000021 3
100000004 2
100000017 3
100000007 7
100000067 5

和一个矩阵,其中包含ID号列表(来自第二列)和相应的字符串(如各种转换表)。

看起来与此相似:

名称

IDnum   IDnames
1  NNW43
2  N3
3  SE21
4  SW54
5  W6
6  W12
7  NE10
...

因此,此矩阵较短,因为每个ID号都有一个对应的字符串,但在原始数据框中,有多个loc包含相同的IDnum。

我确定有一种简单的方法可以将每个ID号与一个字符串相匹配,并创建一个新的数据框,第一列相同但第二列包含字符串而不是ID号,但是我&#39 ;我不确定它是什么。我所知道的是,我告诉你,如果你在R中使用循环你做错了。

结果将类似于

loc name
100000001 NNW43
100000009 NE10
100000021 SE21
100000004 N3
100000017 SE21
100000007 NE10
100000067 W6

我很难弄清楚如何标题这个问题,所以对此的任何输入都是有用的。提前致谢!

已编辑以提供可重复的示例

2 个答案:

答案 0 :(得分:0)

如果names矩阵或数据框具有顺序编号的名称,那么只需使用IDnum作为该对象的IDnames向量的索引:

 locations$name <- names$IDnames[locations$IDnum]

如果它们没有按顺序编号,那么您需要使用match来获取正确的行号:

 locations$name <- names$IDnames[match( locations$IDnum, names$IDnum) ]

(这很可能是一个重复的问题和答案。)

答案 1 :(得分:0)

我最终使用了     loc_names&lt; - merge(locations,names,by =“IDnum”,all.x = TRUE)