r - 如何将一个 data.frame 中的值替换为另一个 data.frame 中的值?

标签 r merge dplyr

我有两个 data.frames - 第一个已编码:

correlations <- data.frame(var1 = c('a','a','a','b','e'), var2 = c('b','c','d','e','c'), r = runif(5,0.5,1))
correlations

var1 var2          r
   a    b  0.6702400
   a    c  0.7301086
   a    d  0.5727880
   b    e  0.5916388
   e    c  0.5510549

第二个包含该代码的 key :

D <- data.frame(code = letters[1:5],name=c('setosa','bulbifer','rubra','minor','nigra'))
D

  code     name
   a     setosa
   b   bulbifer
   c      rubra
   d      minor
   e      nigra

我需要通过第二个 data.frame 中的变量 codename 重新编码第一个数据集 D。 结果:

     var1     var2          r
   setosa bulbifer  0.6702400
   setosa    rubra  0.7301086
   setosa    minor  0.5727880
 bulbifer    nigra  0.5916388
    nigra    rubra  0.5510549

我不知道如何实现这一点(我需要一些功能,如合并、替换、 map 或其他功能,但没有任何适合于此的功能)。

最佳答案

使用库dplyr尝试一下

library(dplyr)

D <- left_join(correlations, D, by=c("var1" ="code")) %>% 
  left_join(D, by=c("var2" ="code")) %>% select(name.x, name.y, r) %>% 
  rename(var1=name.x, var2=name.x)

逻辑是:使用关联连接两次,一次在var1上,然后在var2上。然后删除旧的 var1var2,然后重命名新的变量。

关于r - 如何将一个 data.frame 中的值替换为另一个 data.frame 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30063215/

相关文章:

r - 使用 map/apply 函数迭代执行连接的整洁方法

r - 基于多个列计算排名,具有优先规则

r - 将动态数量的迹线添加到 Shiny 的图中

r - 在 r 中合并具有相似内容的列表项?

r - ggplot2 图表轴中的印度风格千位分隔符

java - Hibernate:如果引用不存在,则保存引用

mysql - 如何使用 group by 'a' field by max of 'b' field 合并两个生成的表?

r - 计算由另一列分组的连续列值的差异

r - 将 sapply/vapply 用于 read_html

r - 在ggplot2中分别标准化多面直方图