如何使用R对列进行聚类

时间:2012-01-20 15:49:21

标签: r

我有一个数据框

numbers = 1:4
letters = factor(c("a", "b", "c", "d"))
df <- data.frame(numbers, letters)
numbers letters
1       1       a
2       2       b
3       3       c
4       4       d

我想创建一个新的列聚类最后一列:

numbers letters
1       1       a      c1
2       2       b      c2
3       3       c      c1
4       4       d      c1

R有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

R有许多不同的方法来聚类数据。以下是使用k-means进行操作的方法,这是最受欢迎的方法:

# Simulate data
data = data.frame(var1=rnorm(100), var2=rnorm(100), var3=c('a', 'b')[sample(2, 100, replace=T)])

# Convert factor variables to numeric 'dummy' variables
data.num = model.matrix(~ . - 1, data)

# Assign clusters
data$cl = kmeans(data.num, 2)$cluster

# Plot
dev.new(width=4, height=4)
with(data, plot(var1, var2, type='n'))
with(data, text(var1, var2, var3, col=cl))

enter image description here

这里的2个集群是用颜色标识的,并且没有意义,因为数据是正态分布的,但是你明白了......