gpt4 book ai didi

R基于两列合并或查找单元格值

转载 作者:行者123 更新时间:2023-12-04 09:33:46 25 4
gpt4 key购买 nike

我有两张表,我想将其中一张的信息传输到另一张。

有名称和子名称。每个名称+子名称组合都有一个与之关联的值,该值是在第一步中独立计算的。

在下一步中,每个名称都分配有两个特殊的子名称(sub1 和 sub2),我需要检索与每个名称 + 子名称对关联的值。

换句话说,对于每个名称,我需要检索 name+sub1 的值和 name+sub2 的值。

在第一个表中,每一行都有一个名称,每个可能的子名称都有一个值。这里的子名称称为 xywz。值是数字。

Name    x    y    w    z
abc 4 8 3 1
def 2 5 1 7

在第二个表中,每一行在第一列中有一个名称,在接下来的两列中有两个相关的子名称。两个表的第一列中都有完整的名称集,但并非第二个表中的每个子名称都存在于第一个表中。对于这些行,只需返回“NA”即可。

Name    Sub1        Sub2
abc x y
def w z

我想合并这些表,所以我得到这样的结果:

Name    Sub1        Sub2    Sub1.Value    Sub2.Value
abc x y 4 8
def w z 1 7

这些是可复制/粘贴的示例表(第一个表实际上有约 1k 行和约 30k 列)。

first.table=data.frame(Name=c('abc','def'),x=c(4,2),y=c(8,5),w=c(3,1),z=c(1,7))
second.table=data.frame(Name=c('abc','def'),Sub1=c('x','w'),Sub2=c('y','z'))

最佳答案

等等:

library(reshape2)
# melt into long format
ldf <- melt(first.table,id.vars='Name')

# merge on Name and the Sub's
second.table <- merge(second.table,ldf,by.x=c('Name','Sub1'),by.y=c('Name','variable'))
second.table <- merge(second.table,ldf,by.x=c('Name','Sub2'),by.y=c('Name','variable'))

# rename columns to the correct values
colnames(second.table)[4:5] <- c('Sub1.Value','Sub2.Value')

关于R基于两列合并或查找单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16474450/

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