加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

使用聚合通过两个条件合并数据框的列

发布时间:2020-05-23 00:05:59 所属栏目:程序设计 来源:互联网
导读:我有一个像这样的矩阵 P A B C 1 2 0 5 2 1 1 3 3 0 4 7 1 1 1 0 3 1 1 0 3 0 2 1 2 3 3 4 我想按P和每个列合并/排序行.因此,每个P值为每列一次,并且每列中每个P的值相加.结果应该是: P A B C 1 3 0 0

我有一个像这样的矩阵

P   A   B  C 
  1   2   0  5
  2   1   1  3
  3   0   4  7
  1   1   1  0
  3   1   1  0
  3   0   2  1
  2   3   3  4

我想按P和每个列合并/排序行.因此,每个P值为每列一次,并且每列中每个P的值相加.结果应该是:

P  A  B  C
 1  3  0  0 
 1  0  1  0 
 1  0  0  5
 2  4  0  0
 2  0  4  0
 2  0  0  7
 3  1  0  0
 3  0  7  0
 3  0  0  8

我尝试过已经聚合但它只能帮助我总结所有列的每个P值,这样我每个P只有一行.

另一个想法是使用diag函数本身来创建矩阵.然后你可以将这些矩阵联系在一起.
xx=aggregate(. ~ P,df,sum)
yy=xx[,-1]
yy=as.data.frame(t(yy))
cbind(rep(1:ncol(yy),nrow(yy)),do.call("rbind",lapply(yy,function(xx) diag(xx,nrow = nrow(yy),ncol = nrow(yy)))))

      [,1] [,2] [,3] [,4]
 [1,]    1    3    0    0
 [2,]    2    0    1    0
 [3,]    3    0    0    5
 [4,]    1    4    0    0
 [5,]    2    0    4    0
 [6,]    3    0    0    7
 [7,]    1    1    0    0
 [8,]    2    0    7    0
 [9,]    3    0    0    8

(编辑:安卓应用网)

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

    推荐文章
      热点阅读