【发布时间】:2018-08-04 18:40:57
【问题描述】:
我很难理解如何在 R 中执行相当于查找表的操作。我看到有人建议您应该使用“合并”来代替查找表,但我不是确定正确的方法是什么:
假设我有以下内容:
set.seed(42)
person_ids <- data.frame(person_1_id = stringi::stri_rand_strings(100, 10, '[A-Z]'),
person_2_id = stringi::stri_rand_strings(100, 10, '[A-Z]'))
team_id_lookup <- data.frame(person_id = stringi::stri_rand_strings(100, 10, '[A-Z]'),
team_ids = floor(runif(100, min=0, max=500)))
我想在 person_ids 中创建两个新列 -- team_id_1 和 team_id_2,它们使用查找数据框来查找给定 person_id 的相应 team_ids 并获取该值。
这里的正确方法是什么?
【问题讨论】:
-
一种想法是您可以使用
hash包,您也可以考虑使用命名向量而不是数据框来查找值。甚至是一个命名列表。然后,您可以根据匹配 person_id 的名称设置两个 team_id 值。 -
由于您的随机字符串生成过程,似乎没有匹配项。我将尝试发布一个类似但更简单的示例。希望对您有所帮助....
-
您不需要查找表中的 200 个名称并让这些名称与人员表中的名称匹配吗?
-
我确实想指出,对于由 10 个随机选择的字母组成的名称,您不太可能得到重复的名称,但在现实世界中却是。因此,在进行任何连接之前,您需要引入某种重复检查。从这个意义上说,给每个人一个这样的随机 id 可能是有用的。
标签: r