gpt4 book ai didi

r - 基于共享标识符将两个数据帧的值相乘

转载 作者:行者123 更新时间:2023-12-04 11:56:48 26 4
gpt4 key购买 nike

我有两个数据框:

一号:

>df1

ID NUM QUANT STR IDENT
1 30 30 10 1111
1 30 50 100 2222
2 60 60 20 1111
3 15 15 10 3333
3 20 10 10 1111
4 60 30 20 2222
5 30 20 15 3333
6 45 60 10 2222

2号:

>df2

IDENT FACTOR
1111 1.0
2222 0.5
3333 2.0

我想根据两个数据帧中的值计算一个新值,并将计算的值附加到数据帧 1 中名为 RESULT 的新列。两个数据帧中的共享标识符是 标识.

用于计算值的公式:

STR*QUANT/NUM*FACTOR=RESULT

最终的数据框应如下所示:

  ID NUM QUANT STR IDENT RESULT
1 30 30 10 1111 10.0000
1 30 50 100 2222 83.3333
2 60 60 20 1111 20.0000
3 15 15 10 3333 20.0000
3 20 10 10 1111 5.0000
4 60 30 20 2222 5.0000
5 30 20 15 3333 20.0000
6 45 60 10 2222 6.6667

这是再现数据帧的代码:

ID = c(1, 1, 2, 3, 3, 4, 5, 6) 
NUM = c(30, 30, 60, 15, 20, 60, 30, 45)
QUANT = c(30, 50, 60, 15, 10, 30, 20, 60)
STR = c(10,100,20,10,10,20,15,10)
IDENT = c(1111,2222,1111,3333,1111,2222,3333,2222)
df1 = data.frame(ID, NUM, QUANT, STR, IDENT)

IDENT = c(1111, 2222, 3333)
FACTOR = c(1, 0.5, 2)
df2 = data.frame(IDENT, FACTOR)

IDENT = c(1111,2222,1111,3333,1111,2222,3333,2222)
RESULT = c(10,83.3333,20,20,5,5,20,6.6667)
df3 = data.frame(ID, NUM, QUANT, STR, IDENT, RESULT)

最佳答案

受上述@A5C1D2H2I1M1N2O1R2T1 评论的启发:

output <- within(merge(df1, df2), { RESULT = STR*QUANT/NUM*FACTOR })
output <- output[, !(names(output) %in% c("FACTOR"))]
output

Demo

关于r - 基于共享标识符将两个数据帧的值相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48134263/

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