如何用另一个data.frame的值替换一个data.frame的值?

如何用另一个data.frame的值替换一个data.frame的值?,r,merge,dplyr,R,Merge,Dplyr,我有两个数据帧-第一个是编码的: 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

我有两个数据帧-第一个是编码的:

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

我不知道如何实现这一点(我需要一些函数,如merge、substitute、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)
库(dplyr)
D%
左联合(D,by=c(“var2”=“code”))%%>%选择(name.x,name.y,r)%%>%
重命名(var1=name.x,var2=name.x)

逻辑是:在
var1
上用
correlations
连接两次,然后在
var2
上连接一次。然后删除旧的
var1
var2
,然后重命名新的vars。

或者,您可以
合并
两次?在代码表中使用“var1”而不是“code”作为列名

correlations <- data.frame(var1 = c('a','a','a','b','e'), var2 = c('b','c','d','e','c'), r = runif(5,0.5,1))
D <- data.frame(var1 = letters[1:5],name=c('setosa','bulbifer','rubra','minor','nigra'))

output1 <- merge(D, correlations, by = "var1", all.y = TRUE)
output1$var1 <- NULL
names(output1)[2] = "var1"
output2 <- merge(D, output1, by = "var1", all.y = TRUE)

> output2
  var1   name.x   name.y         r
1    b bulbifer   setosa 0.7328087
2    c    rubra   setosa 0.9492819
3    c    rubra    nigra 0.5884522
4    d    minor   setosa 0.9501921
5    e    nigra bulbifer 0.9266531

相关性在现实生活中,
相关性中有多少列?非常好!我必须进一步了解这个函数。我听说过left join,但与R无关,我没想到会这么容易。。。谢谢
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)
correlations <- data.frame(var1 = c('a','a','a','b','e'), var2 = c('b','c','d','e','c'), r = runif(5,0.5,1))
D <- data.frame(var1 = letters[1:5],name=c('setosa','bulbifer','rubra','minor','nigra'))

output1 <- merge(D, correlations, by = "var1", all.y = TRUE)
output1$var1 <- NULL
names(output1)[2] = "var1"
output2 <- merge(D, output1, by = "var1", all.y = TRUE)

> output2
  var1   name.x   name.y         r
1    b bulbifer   setosa 0.7328087
2    c    rubra   setosa 0.9492819
3    c    rubra    nigra 0.5884522
4    d    minor   setosa 0.9501921
5    e    nigra bulbifer 0.9266531