2016-10-26 10 views
1

temp3の各クラスタについて、セントロイドを計算します。私は最終的にそれがセントロイドの座標上にクラスター番号をプロットしたくないと思います。dplyrを使用して各グループのセントロイドを計算する

データ:

> 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 

コード:

Error: incompatible size (13792), expecting 198 (the group size) or 1

EDIT

別のアプローチを返す

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

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

リターン:

Error: incompatible size (2), expecting 198 (the group size) or 1

+0

関連記事:http://stackoverflow.com/questions/3505701/r-grouping-functions-sapply- vs-lapply-vs-apply-vs-tapply-vs-by-vs-aggregaおよびhttp://gis.stackexchange.com/a/6026/61922 – zx8754

答えて

1

どの程度だけ

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

あなたが入力と同じ次元の結果をしたい場合。

それとも、あなただけの(可能性が高いと思われる)クラスタごとに1行をしたい場合:

temp3 %>% group_by(Cluster) %>% summarise(meanX=mean(X), meanY=mean(Y)) 
関連する問題