根据将 1 个数据框中的 2 个变量与“答案键”数据框中的“键”匹配,从“答案键”数据框中获取值

J·迪亚兹

我想不出一种简洁或有效的方式来表达这一点,但这就是我想要做的......

我有以下几点:

  1. 感兴趣的数据框与列(除其他外):

$first_name:“唐纳德”、“巴拉克”、“乔治”、“比尔”……

$last_name:“特朗普”、“奥巴马”、“布什”、“克林顿”……

  1. 一个“答案关键”数据框:

$name:“唐纳德·约翰,特朗普”,“巴拉克·侯赛因,奥巴马”,“比尔·杰斐逊,克林顿”,“乔治·沃克,布什”,...

$值:0, 2, 4, 6, ...

我想:

$first_name:“唐纳德”、“巴拉克”、“乔治”、“比尔”……

$last_name:“特朗普”、“奥巴马”、“布什”、“克林顿”……

$值:0, 2, 4, 6, ...

需要注意的是:

  1. 没有办法从“答案关键”数据框中知道隐喻的中间名(无需目视检查数千列)。

  2. 名称的排列方式不同(与我显示的方式相反)。

  3. $first_name 和 $last_names 在感兴趣的数据框中重复。

迄今为止

我已经设法使 $first_name 的格式与 $name 中的格式相同(也就是说,我现在有“Bill”和“CLINTON”,但我不知道如何将它们连接到“Bill”杰斐逊,克林顿”<- 6)。我最初计划以某种方式使用 grep() 来匹配它们,但我认为这是不可能的,因为您似乎不能将向量用于“模式=”。

这两个似乎相关,至少在概念上,但我只是在画一个空白。

使用来自另一个数据框中的唯一值和分配给列的相应值的列名称创建新数据框

根据来自不同数据帧的 2 个键定义数据帧中列的值

先感谢您。

阿克伦

我们从第二个数据集中提取子字符串,执行 amatch并使用它来获取“值”

df1$value <- df2$value[match(do.call(paste, df1), toupper(sub("\\s+\\w+,", "", df2$name)))]
df1
#    first_name last_name value
#1     DONALD     TRUMP     0
#2     BARACK     OBAMA     2
#3     GEORGE      BUSH     6
#4       BILL   CLINTON     4

数据

 df1 <- data.frame(first_name = c("DONALD", "BARACK", "GEORGE", "BILL"), 
  last_name = c("TRUMP", "OBAMA", "BUSH", "CLINTON"), stringsAsFactors=FALSE)
 df2 <- data.frame(name = c("Donald John, TRUMP", "Barack Hussein, OBAMA",
  "Bill Jefferson, CLINTON",
     "George Walker, BUSH"), value = c(0, 2, 4, 6) , stringsAsFactors=FALSE)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档