gpt4 book ai didi

r - 将数据帧中的值与另一个数据帧中的值进行匹配,并用另一个数据帧中的相应模式替换前一个

转载 作者:行者123 更新时间:2023-12-03 15:19:15 25 4
gpt4 key购买 nike

标题很复杂,但这是我要实现的简单示例:

d <- data.frame(v1 = c(1,2,3,4,5,6,7,8), 
v2 = c("A","E","C","B","B","C","A","E"))

m <- data.frame(v3 = c("D","E","A","C","D","B"),
v4 = c("d","e","a","c","d","b"))


通过匹配 d$v2m$v4中的值,应将 d$v2中的值替换为 m$v3中的值

生成的数据帧 d应该如下所示:

v1    v4
1 a
2 e
3 c
4 b
5 b
6 c
7 a
8 e


我尝试了不同的东西,而最接近的是: d$v2 <- m$v4[which(m$v3 %in% d$v2)]

我尝试再次避免任何for循环!必须是可能的:-)不知何故...;)

最佳答案

您可以尝试:

merge(d,m, by.x="v2", by.y="v3")
v2 v1 v4
1 A 1 a
2 A 7 a
3 B 4 b
4 B 5 b
5 C 3 c
6 C 6 c
7 E 2 e
8 E 8 e


编辑

这是保留顺序的另一种方法:

data.frame(v1=d$v1, v4=m[match(d$v2, m$v3), 2])
v1 v4
1 1 a
2 2 e
3 3 c
4 4 b
5 5 b
6 6 c
7 7 a
8 8 e

关于r - 将数据帧中的值与另一个数据帧中的值进行匹配,并用另一个数据帧中的相应模式替换前一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11530184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com