gpt4 book ai didi

r - 将两个数据帧除以 R 中的公共(public)行

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

我有2个数据集

> df2<-data.frame(name=c("A","B","C"),F1=c(5,8,9),F2=c(3,8,9),F3=c(1,2,3))
name F1 F2 F3
1 A 5 3 1
2 B 8 8 2
3 C 9 9 3
> df1<-data.frame(name=c("C","C","A","B"),F1=c(1,5,8,9),F2=c(1,5,8,9),F3=c(1,5,8,9))
name F1 F2 F3
1 C 1 1 1
2 C 5 5 5
3 A 8 8 8
4 B 9 9 9

我想用通用名称(如 C/C、C/C、A/A、B/B)将 df1 除以 df2。这只是我的 250x50 数据集的示例。

最佳答案

我们可以使用 data.table 的 join 和 divide

library(data.table)
nm1 <- names(df1)[-1]
nm2 <- paste0('i.', nm1)
setDT(df1)[df2, (nm1) := Map(`/`, mget(nm1), mget(nm2)), on = .(name)]
df1
# name F1 F2 F3
#1: C 0.1111111 0.1111111 0.3333333
#2: C 0.5555556 0.5555556 1.6666667
#3: A 1.6000000 2.6666667 8.0000000
#4: B 1.1250000 1.1250000 4.5000000

关于r - 将两个数据帧除以 R 中的公共(public)行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53657327/

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