2017-02-10 127 views
0

与此page上的示例类似,我想将列中的值相加并除以另一列的值。例如,在下面的代码:R计数除以总和

A <- c(1,1,2,2) 
B <- c(0.2, 0.3, 1, 0.5) 
M <- data.frame(A,B) 
M 

    A B 
1 1 0.2 
2 1 0.3 
3 2 1.0 
4 2 0.5 

我需要总结(B)与ID 1和由计数(A)与ID 1划分它类似地,对于ID 2.

结果应该尽可能如下:

A.1 <- c(1, 2) 
B.1 <- c((0.2+0.3)/2, (1+0.5)/2) 
M.1 <- cbind(A.1, B.1) 
M.1 

    A.1 B.1 
[1,] 1 0.25 
[2,] 2 0.75 

任何想法如何去做到这一点?

+1

你想通过ID的B的平均值? '聚集(B〜A,数据= M,FUN =平均数)' – bouncyball

+0

另一个相关的帖子:http://stackoverflow.com/questions/21982987/mean-per-group-in-a-data-frame – zx8754

+0

@ zx8754它当措词清楚时,很容易将其引向愚蠢。但是,根据OP的描述,我们中的一些人刻意做了解析这些单词并将其引导至简单功能的艰巨任务。所以,dvs是不合理的,无论如何..顺便说一句,顺便说一下,你的欺骗链接是不正确的,因为它是多列,多功能等。 – akrun

回答

-1

不使用外部库,只使用最基本的功能。

mat <- matrix(NA,0,2) 
for (v in unique(M$A)) { 
    m <- mean(M[which(M$A == v),'B']) 
    mat <- rbind(mat,c(v,m)) 
}