我有一个数据框
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有没有办法做到这一点?
答案 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))
这里的2个集群是用颜色标识的,并且没有意义,因为数据是正态分布的,但是你明白了......