gpt4 book ai didi

r - 将一个数据框中的行(带有行名)与另一个数据框中的匹配列名相乘

转载 作者:行者123 更新时间:2023-12-02 07:22:36 24 4
gpt4 key购买 nike

我有两个数据框:

df1 <- data.frame(Values=c(0.01,0.05), row.names=c("X", "Y"))
df1
Values
X 0.01
Y 0.05

df2 <-data.frame(c(0,1,1), c(1,0,0), c(1,1,1))
colnames(df2) <- c("X","Y","Z")

df2
X Y Z
1 0 1 1
2 1 0 1
3 1 0 1

我希望对 df2 执行按行操作,我将 df2 中的每个与其在 df1 中的对应行相乘,然后执行求和

例如,对于 df2 的第 1 行,我希望计算:

df2 %>% rowwise %>% mutate(newVAL=(df1["X",]*df2[1,"X"])+(df1["Y",]*df2[1,"Y"]))

同时排除不匹配的列(df1 中的行)或具有 NA 的列。

我在 df1 中有几千行,在 df2 中有几千行和几列。

非常感谢任何帮助!!

附言。我已经使用散列在 Perl 中实现了这一点,并使用 system() 调用在 Rmarkdown 文档中执行这些计算。为了使其完全可重现,我正在尝试在 R 中重做它。如有必要,很高兴分享 Perl 代码。

谢谢。

最佳答案

如果我没理解错的话,看起来你需要sweep

df3 <- sweep(df2[, rownames(df1)], 2, t(df1), '*')
df3$total <- rowSums(df3)

关于r - 将一个数据框中的行(带有行名)与另一个数据框中的匹配列名相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41708426/

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