我有两组2d点(x,y坐标)。如何将这两组点对齐到同一参考点(质心)?
让我的两套
A
x y
1 3
4 2
7 8
3 5
乙
x y
9 5
14 7
17 3
30 25
质心是指:它是所有坐标方向上所有点的平均位置。
任何人都可以建议我如何使用R。
提前致谢。
稍后添加:
data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5))
data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25))
群集的质心是:
m1=c(mean(data1[,1]),mean(data1[,2]))
m2=c(mean(data2[,1]),mean(data2[,2]))
现在我想对齐(coinide)m1
和m2
并获得与公共关系相关的所有聚类点
对齐的质心。怎么做。
提前致谢。
答案 0 :(得分:1)
有点迟到了,但是:
对齐原点的技术术语是居中。
如果您的群组使用不同的变量,则可以使用scale
:
data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5))
data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25))
scale (data1, center = TRUE, scale = FALSE)
scale (data2, center = TRUE, scale = FALSE)
如果这些群组位于同一数据框内,ave
可以提供帮助(另请参阅aggregate
:
data1$group <- "A"
data2$group <- "B"
data <- rbind (data1, data2)
data$x <- data$x - ave (data$x, data$group)
data$y <- data$y - ave (data$y, data$group)
答案 1 :(得分:-1)
通常你会用kmeans做这样的事情。通常你会尝试确定最佳的簇数,但在你的情况下,如果你假设只是一个全局均值,因此一个簇就是这样的:
#Two datasets
data1<-data.frame(x=c(1,4,7,3), y=c(3,2,8,5))
data2<-data.frame(x=c(9,14,17,30), y=c(5,7,3,25))
#combine datasets into one data frame
comb.data<-rbind(data1,data2)
#find the center of the data by assuming there is only one
fit<-kmeans(comb.data, centers=1)
#print out coordinates of center:
fit$centers
您也可以使用带有上述代码的群集包绘制它,并添加:
library(cluster)
clusplot(comb.data, fit$cluster, color=T)
更多信息可以在http://www.statmethods.net/advstats/cluster.html找到,但是根据您的兴趣是生物学,化学计量学等,还有一千个参与R的聚类参考。