r - 连接数据框和替换行
问题描述
我有一个这样的表: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
有任何想法吗?
谢谢你的帮助!
解决方案
使用的选项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")
推荐阅读
- mysql - MySQL:在过程中动态创建游标
- python - 将多个变量传递给 PoolExecutor
- git - Git 状态和本地 repo 文件
- qt - 如何在 Qt 中将 form.ui 插入到 mainwindow.ui 中?
- python - 如何将数据从烧瓶前端发送到 python 后端,最终得到结果?
- css - 更改闪亮的 bsTooltip 框的颜色
- objective-c - 在“for循环”结束时触发事件
- c - 如何在处理c中长度较长的字符串的行中输入2个具有特定大小的字符串?
- typescript - 如何在 TypeScript 的函数声明中指定具有缩小的伞形类型的返回类型?
- django - 在终端中创建超级用户时出错