我将尝试根据列中的分类变量计算行(数据点)之间的距离。我所见过的最简单的方法是计算重叠部分。换句话说,x和y在多少个变量上取相同的值。
我想它起作用了...
我的问题是,这个已经被更整洁和更普遍地实现了吗?另外,一般来说,是否有一个包可以从分类变量计算距离度量。
谢谢!
想象一下,我有一个如下的数据集;
Id = 1:5
dummy <- data.frame(Country = c("UK", "UK", "USA", "USA", "USA"),
Category = c("Private", "Public", "Private", "Private", "Public"),
Level = c("High", "Low", "Low", "Low", "High"))
我希望能够计算所有行之间的比例重叠(如上所述)。
我可以定义一个函数来完成此操作;
calcOverlap <- function(Id, df) {
n <- length(Id)
results <- matrix(NA, n, n)
for(i in 1:n) {
for(j in 1:n) {
if(i > j) {
results[i, j] <- length(which(df[i,] == df[j,])) / ncol(df)
}
}
}
results
}
我想它起作用了...
dummy
calcOverlap(Id, dummy)
我的问题是,这个已经被更整洁和更普遍地实现了吗?另外,一般来说,是否有一个包可以从分类变量计算距离度量。
谢谢!
combn()
。感谢您抽出时间回答。您是否知道是否存在针对分类变量的其他距离度量实现? - roman?dist
,您将看到许多不同的方法。在我看来,似乎没有一个适用于分类变量。然而,向下滚动,在“另请参阅”下提到了一些可能有帮助的包。 - Frank