[英]How to retrieve value in one data frame by matching a string within an entire column from another data frame?
[英]How to replace the data frame value with another data frame by matching one column value in R?
假设我有一个像这样的数据帧A:
index value1 value2
a ss aa
b dd ff
c gg hh
d yy zz
e cc xx
另一个像这样的数据帧B:
index value1 value2
c oooo pppp
d uuuu vvvv
我希望将A替换为B值并更改为
index value1 value2
a ss aa
b dd ff
c oooo pppp
d uuuu vvvv
e cc xx
您可以例如:
rbind(
A[!A$index %in% B$index, ],
merge(A[, "index", drop = FALSE], B)
)
# index value1 value2
# 1 a ss aa
# 2 b dd ff
# 5 e cc xx
# 11 c oooo pppp
# 21 d uuuu vvvv
我们可以做一个连接on
“索引”
library(data.table)
setDT(A)[B, names(A)[-1] := mget(paste0("i.", names(B)[-1])), on = .(index)]
A
# index value1 value2
#1: a ss aa
#2: b dd ff
#3: c oooo pppp
#4: d uuuu vvvv
#5: e cc xx
注意:假设“值”列是character
而不是factor
类
A <- structure(list(index = c("a", "b", "c", "d", "e"), value1 = c("ss",
"dd", "gg", "yy", "cc"), value2 = c("aa", "ff", "hh", "zz", "xx"
)), .Names = c("index", "value1", "value2"), class = "data.frame",
row.names = c(NA, -5L))
B <- structure(list(index = c("c", "d"), value1 = c("oooo", "uuuu"
), value2 = c("pppp", "vvvv")), .Names = c("index", "value1",
"value2"), class = "data.frame", row.names = c(NA, -2L))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.