我在gtrendsR的帮助下导入了一些谷歌趋势数据并成功绘制了它。 现在我想用h.clust对数据进行聚类,但我的问题是我没有成功转换为距离向量的数据格式。
数据如下:
datestart, date-end, trend1, trend2, trend3
1 2004-01-04 2004-01-10 57 18 39
2 2004-01-11 2004-01-17 55 17 39
3 2004-01-18 2004-01-24 56 20 43
4 2004-01-25 2004-01-31 55 19 41
5 2004-02-01 2004-02-07 57 20 39
6 2004-02-08 2004-02-14 57 18 40
为了绘制数据,我使用了data.frame。
任何人都可以帮助我了解如何转换数据的想法,以便我可以聚集"形状"趋势分为不同的集群?
答案 0 :(得分:1)
您可以将Gmail趋势曲线的形状聚类为:
set.seed(1)
library(gtrendsR)
library(dtw)
# Switch https://www.google.com/settings/security/lesssecureapps to on if needed:
gconnect("your_google_email", "your_google_psw")
cotton_trend <- gtrends(c("cotton", "satin", "velvet"), res="week")
d <- dist(t(cotton_trend$trend[, -(1:2)]), method="DTW")
hc <- hclust(d)
# plot the results
par(mfrow=c(1,2))
plot(cotton~end, cotton_trend$trend, type="l", ylim=range(cotton_trend$trend[, -(1:2)]), col=3, ylim="")
for (x in 4:ncol(cotton_trend$trend)) lines(x=cotton_trend$trend$end, y=cotton_trend$trend[, x], col=x)
legend("topleft", names(cotton_trend$trend)[-(1:2)], lty=1, col=3:ncol(cotton_trend$trend))
plot(hc)
rect.hclust(hc, k=2)
# extract clusters:
cutree(hc, k=2)
# cotton satin velvet
# 1 2 1