在我的数据分析中开始使用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
我很难弄清楚如何标题这个问题,所以对此的任何输入都是有用的。提前致谢!
已编辑以提供可重复的示例
答案 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)