首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有一定功能的r-群聚类

具有一定功能的r-群聚类
EN

Stack Overflow用户
提问于 2016-10-30 01:33:52
回答 3查看 1.2K关注 0票数 0

我希望通过特定的组和操作来聚合数据帧。

数据

代码语言:javascript
运行
复制
> df <- data.frame(replicate(9, 1:4))
  X1 X2 X3 X4 X5 X6 X7 X8 X9
1  1  1  1  1  1  1  1  1  1
2  2  2  2  2  2  2  2  2  2
3  3  3  3  3  3  3  3  3  3
4  4  4  4  4  4  4  4  4  4

聚合

代码语言:javascript
运行
复制
> aggregate(df[,2], list(df[,1]), mean)
  Group.1 x
1       1 1
2       2 2
3       3 3
4       4 4

上面的聚合工作,这是很好的。但是,代替mean,我需要使用像mean*sd/length^2这样的函数的组合。我们是不是应该在这里使用聚合以外的东西呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-30 01:49:57

我修改了示例数据框架,以获得每个组的长度和标准偏差(每个组不能只使用一个数据点)。

代码语言:javascript
运行
复制
> df
   X1 X2 X3 X4 X5 X6 X7 X8 X9
1   1  1  1  1  1  1  1  1  1
2   2  2  2  2  2  2  2  2  2
3   3  3  3  3  3  3  3  3  3
4   4  4  4  4  4  4  4  4  4
5   1  1  1  1  1  1  1  1  1
6   2  2  2  2  2  2  2  2  2
7   3  3  3  3  3  3  3  3  3
8   4  4  4  4  4  4  4  4  4
9   1  4  4  4  4  4  4  4  4
10  2  5  5  5  5  5  5  5  5
11  3  6  6  6  6  6  6  6  6
12  4  7  7  7  7  7  7  7  7
13  1  4  4  4  4  4  4  4  4
14  2  5  5  5  5  5  5  5  5
15  3  6  6  6  6  6  6  6  6
16  4  7  7  7  7  7  7  7  7

若要用更详细的公式进行汇总,请做:

代码语言:javascript
运行
复制
aggregate(df[,2], list(df[,1]), function(x){mean(x)*sd(x)/length(x)^2})
  Group.1         x
1       1 0.2706329
2       2 0.3788861
3       3 0.4871393
4       4 0.5953925

如果您想拥有相同的列标签,可以这样做:

代码语言:javascript
运行
复制
aggregate(list(X2 = df[,2]), list(X1 = df[,1]), function(x){mean(x)*sd(x)/length(x)^2})
  X1        X2
1  1 0.2706329
2  2 0.3788861
3  3 0.4871393
4  4 0.5953925

(或者用colnames重命名)

票数 1
EN

Stack Overflow用户

发布于 2016-10-30 01:52:47

下面是您如何使用dplyr来做这件事

代码语言:javascript
运行
复制
df %>% group_by(X1) %>% summarize(x = mean(X2)*sd(X2)/length(X2)^2)
票数 1
EN

Stack Overflow用户

发布于 2016-10-30 02:52:10

下面是data.table的一个选项

代码语言:javascript
运行
复制
library(data.table)
setDT(df)[, .(x = mean(X2)*sd(X2)/.N^2), by = X1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40325275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档