加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用聚合在一个调用中对几个变量应用几个函数

发布时间:2020-12-14 01:18:20 所属栏目:百科 来源:网络整理
导读:我有以下数据框 x - read.table(text = " id1 id2 val1 val21 a x 1 92 a x 2 43 a y 3 54 a y 4 95 b x 1 76 b y 4 47 b x 3 98 b y 2 8",header = TRUE) 我想计算由id1和id2分组的val1和val2的平均值,同时计算每个id1-id2组合的行数。我可以单独执行每个
我有以下数据框
x <- read.table(text = "  id1 id2 val1 val2
1   a   x    1    9
2   a   x    2    4
3   a   y    3    5
4   a   y    4    9
5   b   x    1    7
6   b   y    4    4
7   b   x    3    9
8   b   y    2    8",header = TRUE)

我想计算由id1和id2分组的val1和val2的平均值,同时计算每个id1-id2组合的行数。我可以单独执行每个计算:

# calculate mean
aggregate(. ~ id1 + id2,data = x,FUN = mean)

# count rows
aggregate(. ~ id1 + id2,FUN = length)

为了做一次电话中的两个计算,我试过

do.call("rbind",aggregate(. ~ id1 + id2,FUN = function(x) data.frame(m = mean(x),n = length(x))))

但是,我得到一个乱码输出和警告:

#     m   n
# id1 1   2
# id2 1   1
#     1.5 2
#     2   2
#     3.5 2
#     3   2
#     6.5 2
#     8   2
#     7   2
#     6   2
# Warning message:
#   In rbind(id1 = c(1L,2L,1L,2L),id2 = c(1L,val1 = list( :
#   number of columns of result is not a multiple of vector length (arg 1)

我可以使用plyr包,但我的数据集是相当大,plyr是非常慢(几乎不可用)当数据集的大小增长。

如何使用聚合在一个调用中执行几个计算?

你可以一步一步做到这一切,并得到适当的标签:
> aggregate(. ~ id1+id2,FUN = function(x) c(mn = mean(x),n = length(x) ) )
#   id1 id2 val1.mn val1.n val2.mn val2.n
# 1   a   x     1.5    2.0     6.5    2.0
# 2   b   x     2.0    2.0     8.0    2.0
# 3   a   y     3.5    2.0     7.0    2.0
# 4   b   y     3.0    2.0     6.0    2.0

这是LHS上多个变量的语法:

aggregate(cbind(val1,val2) ~ id1 + id2,n = length(x) ) )

更新:(不是真的,更多的评论和一个错误)

因为有一个错误? (2013-08-08)在聚合中,您不能在data.frame类的对象中保存aggregate(data.frame)的输出。
要获得正确的结果,您必须:

object <- as.data.frame(as.list(aggregate(data.frame)))

作者回复“更新”上面“

我发现没有这样的错误(如下所述@ user2659402)。我在MacOS 10.7.5上运行最新版本的R。我发现上面的代码完全不必要,因为聚合返回的对象类是“data.frame”。如果编辑在基本R函数中声明了错误,那么它们应该伴随有足够的数据文档,以及“正确结果”真正意味着与R版本和操作系统观察到的行为。

10/27/2014:我还没有发现这样的行为。我目前在Mac上运行R 3.1.1在Yosemite下,我测试了(再次)与Mac GUI和RStudio版本0.98.1081环境。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读