gpt4 book ai didi

r - R中 "adding"两个大表的简单方法?

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

是否有一种简单的方法可以在 中的两个大表中添加每个类别的计数? R ?

...其中表格并不都具有完全相同的值(尽管它们大部分会重叠):

我正在尝试做的小例子。设置一些数据:

  x1 <- c(5, 3, 3, 6, 3, 3, 5, 5, 11, 2, 4, 9, 3, 5, 8, 2, 8, 5, 4, 8)
x2 <- c(6, 10, 9, 17, 6, 7, 8, 11, 5, 12, 14, 5, 11, 7, 7)

table(x1)
x1
2 3 4 5 6 8 9 11
2 5 2 5 1 3 1 1

table(x2)
x2
5 6 7 8 9 10 11 12 14 17
2 2 3 1 1 1 2 1 1 1

现在我想把这些表组合起来,就像我已经完成了 table(c(x1,x2)) ,得到:
 2  3  4  5  6  7  8  9 10 11 12 14 17 
2 5 2 7 3 3 4 2 1 3 1 1 1

但是现在想象 x1 和 x2 消失了(而且非常大,所以我真的不
想从表中重新创建它们并实际执行 table(c(x1,x2)) ),
我只想拿 table t1t2并添加他们的(通常非常大)计数......我可以用几种非常笨拙的方式来做。

但是,这似乎应该很常见,也很容易解决
问题(确实,我认为 t1 + t2 应该适用于带有类别的表
相同类型),但在我能想到的每个搜索词上搜索问题
的没有找到任何东西。

我是否错过了一个非常简单而明显的方法来做到这一点?

编辑:

澄清一下,这样的事情(我做了)对于必须的事情来说并不是“简单而明显的”
是一个非常常见的表格操作:
 m <- merge(t1,t2,by.x="x1",by.y="x2",all=TRUE)
m[is.na(m)] <- 0
oo <- order(m$x1)
t12 <- m[oo,2]+m[oo,3]
names(t12) <- m[oo,1]

特别是,这确实并不比蛮力方法更简单也更容易遵循。

最佳答案

另一种使用 tapply 的方法:

tapply(c(t1,t2), names(c(t1,t2)), sum)
# 10 11 12 14 17 2 3 4 5 6 7 8 9
# 1 3 1 1 1 2 5 2 7 3 3 4 2

如果你想要一个排序的输出,这里是:
w <- c(t1,t2)
# edit: Following G.Grothendieck's suggestion to simplify it further
tapply(w, as.numeric(names(w)), sum)
# 2 3 4 5 6 7 8 9 10 11 12 14 17
# 2 5 2 7 3 3 4 2 1 3 1 1 1

关于r - R中 "adding"两个大表的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16416146/

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