gpt4 book ai didi

r - 将一个表除以另一个,匹配索引

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

我有两个共享索引的表,我想将它们分开。这可以通过对两个数据帧进行划分来完成。但这似乎是任意的(我怎么知道我在划分正确的数字?)并且不保留索引,所以我想通过匹配具有相同索引的行来进行划分。最好的方法是什么?在这种情况下,在表划分方面是否有最佳实践?

tb1 <- data.frame(index = c(1, 2, 3), total_1 = c(100, 450, 300), total_2 = c(20, 39, 60))
tb2 <- data.frame(index = c(1, 2, 3), unit_1 = c(4, 2, 3), unit_2 = c(2, 3, 6))
tb1[,-1]/tb2[,-1]
total_1 total_2
1 25 10
2 225 13
3 100 10

另一种情况,索引的两个列必须匹配。

tb2 <- data.frame(index_1 = c("a", "b", "b"), index_2 = c("c", "d", "b"), unit_1 = c(4, 2, 3), unit_2 = c(2, 3, 6))
tb1 <- data.frame(index_1 = c("a", "b", "b"), index_2 = c("c", "d", "b"), total_1 = c(100, 450, 300), total_2 = c(20, 39, 60))

最佳答案

如果两个数据有相同的索引且行数相同。一种方法是在两个数据中按“索引”排序,以强制它们的顺序相同。然后做除法

tb1new <- tb1[order(tb1$index),]
tbl2new <- tb2[order(tb2$index),]
tb1new[-1] <- tbl1new[-1]/tbl2new[-1]

或者我们可以先检查两个“索引”,然后使用该条件进行除法

i1 <- all.equal(tbl1$index, tbl2$index)
if(i1) tb1[-1]/tbl2[-1]

或连接中的另一个选项

library(data.table)
nm1 <- c('total_1', 'total_2')
nm2 <- c('unit_1', 'unit_2')
setDT(tb1)[tb2, (nm1) := .SD/mget(nm2), on = .(index), .SDcols = nm1]

关于r - 将一个表除以另一个,匹配索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67392597/

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