首页 > 解决方案 > 连接数据框和替换行

问题描述

我有一个这样的表:data1

  V1 V2 V3
1  a  d  t
2  b  d  w
3  c  e  t
4  a  d  t
5  b  f  w
6  c  g  t
7  a  h  w
8  b  k  w
9  c  e  w

和数据2:

  V1 V2 V3
1  a  d  w
2  b  f  t
3  c  e  t

现在,对于 V1 和 V2 中相同的所有行,我想将 data1 中的 V3 替换为 data2 中的 V3。所以我得到一个这样的表:

   V1 V2 V3
1  a  d  w
2  b  d  w
3  c  e  t
4  a  d  t
5  b  f  t
6  c  g  t
7  a  h  w
8  b  k  w
9  c  e  t

有任何想法吗?

谢谢你的帮助!

标签: rjoin

解决方案


使用的选项data.table

library(data.table)
setDT(data1)[data2, V3 := i.V3, on = .(V1, V2)]
data1
#   V1 V2 V3
#1:  a  d  w
#2:  b  d  w
#3:  c  e  t
#4:  a  d  w
#5:  b  f  t
#6:  c  g  t
#7:  a  h  w
#8:  b  k  w
#9:  c  e  t

数据

data1 <- structure(list(V1 = c("a", "b", "c", "a", "b", "c", "a", "b", 
"c"), V2 = c("d", "d", "e", "d", "f", "g", "h", "k", "e"), V3 = c("t", 
"w", "t", "t", "w", "t", "w", "w", "w")), row.names = c(NA, -9L
), class = "data.frame")

data2 <- structure(list(V1 = c("a", "b", "c"), V2 = c("d", "f", "e"), 
V3 = c("w", "t", "t")), row.names = c(NA, -3L), class = "data.frame")

推荐阅读