2017-02-10 56 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)) 
}