使用dplyr计算每个组的质心

时间:2016-10-26 16:20:03

标签: r dplyr centroid

对于temp3中的每个群集,计算它的质心。我最终不想在它的质心坐标上绘制簇号。

数据:

> head(temp3)
                             X         Y Transcripts Genes Timepoint Run Cluster
6B_0_GACCGCGATATT -102.1425877 13.944831      134028 11269     Day 0  6B       2
6B_0_ATTGCGGAGACA  -38.6617527  0.600154      106849 10947     Day 0  6B       3
6B_0_ATGGTCACCACT  -23.3275424 34.178312      105817 10495     Day 0  6B       4
6B_0_ATATTGCTAATC   -0.6069128 52.449397       79920  9650     Day 0  6B       4
6B_0_ATCTAATCTACC   -0.4738788 54.756711       72912  9294     Day 0  6B       4
6B_0_CGCAGTGTGCCC  108.5333675 76.637930       70132  9291     Day 0  6B       6

代码:

library(dplyr)
temp3 %>% group_by(Cluster) %>% mutate(., Centroid=rowMeans(cbind(.$X, .$Y), na.rm = TRUE))

返回:

  

错误:尺寸不兼容(13792),期望198(组大小)或1

编辑

另一种方法:

library(cluster)
temp3 %>% group_by(Cluster) %>% mutate(., Centroid=pam(cbind(.$X, .$Y), 1)$medoids)

返回:

  

错误:大小不一致(2),期望198(组大小)或1

1 个答案:

答案 0 :(得分:1)

如何

temp3 %>% group_by(Cluster) %>% mutate(meanX=mean(X), meanY=mean(Y))

如果您想要一个与输入尺寸相同的结果。

或者,如果您只想在每个群集中使用一行(这似乎更有可能):

temp3 %>% group_by(Cluster) %>% summarise(meanX=mean(X), meanY=mean(Y))