【问题标题】:How to get the id when the character matches字符匹配时如何获取id
【发布时间】:2021-09-16 09:38:46
【问题描述】:

我将得到一个输入表单 df1,如果名称与 df 匹配,我需要获取相应的 id ex(health 表示 2) 任何人都可以帮助我了解如何捕获该 id

df <- data.frame(id = c(1,2,3,4), B = c('agri','health','edu','energy'))
    
df1 <- data.frame(name = c('agri','health','edu','energy')) 

【问题讨论】:

  • 您可以使用matchdf$id[match('health', df$B)] 吗?这是你需要的吗?
  • 不,我只会得到一个输入,所以如果我将输入作为 agri,我需要获取名称 ex 的特定 id,然后我需要获取输出 id 1 @RonakShah
  • 我认为这就是我的评论所做的。而不是'health',而是替换为您获得的名称。
  • 实际上不知道为什么它在我的应用程序中显示 na 有没有其他方法可以实现这一点
  • “任何其他方式来实现这一目标”是什么意思?这里提供的解决方案不起作用吗?如果他们不这样做,请更好地解释您的问题以及您想要的输出。

标签: r dplyr stringr


【解决方案1】:

如果您对所有比赛感兴趣:

df$id[match(df1$name, df$B)]

也许您想将各自的 ID 添加到您的 df1data 中?

那么你可以这样做:

df1$new_id <- df$id[match(df1$name, df$B)]

给出:

    name new_id
1   agri      1
2 health      2
3    edu      3
4 energy      4

【讨论】:

  • df1 中的名称应该与 df 匹配然后我需要 df1 中的相应 id ex 我选择 agri 然后它应该给出 df 中的 1 的相应 id
  • 类似于@Ronak Shah 在上面的评论中所说的,这正是该函数的作用。 Ronak Shah 的解决方案让您决定要匹配哪个名称,而我的解决方案为您提供所有匹配项,即它告诉您哪个 id 属于“agri”,哪个 id 属于“health”等等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 2020-12-25
  • 2019-04-08
  • 1970-01-01
  • 2015-03-22
相关资源
最近更新 更多