【发布时间】:2015-04-07 07:46:24
【问题描述】:
我正在使用常规方法做一个层次聚类项目。
mydata.dtm <- TermDocumentMatrix(mydata.corpus)
mydata.dtm2 <- removeSparseTerms(mydata.dtm, sparse=0.98)
mydata.df <- as.data.frame(inspect(mydata.dtm2))
mydata.df.scale <- scale(mydata.df)
d <- dist(mydata.df.scale, method = "euclidean") # distance matrix
fit <- hclust(d, method="ward")
groups <- cutree(fit, k=10)
groups
congestion cough ear eye fever flu fluzonenon medicare painpressure physical pink ppd pressure
1 2 3 4 5 6 5 5 5 7 4 8 5
rash screening shot sinus sore sports symptoms throat uti
5 5 6 1 9 7 5 9 10
我想要的是将组号放回原始数据中的新列。
我看过approximate string matching within single list - r
因为这里的df是一个文档矩阵所以我在df <- t(data.frame(mydata.df.scale,cutree(hc,k=10)))之后得到的是一个类似
df[1:5,1:5]
congestion cough ear eye fever
[1,] 0 0 0 0 0
[2,] 0 0 0 0 0
[3,] 0 0 0 0 0
[4,] 0 0 0 1 0
[5,] 0 0 0 0 0
既然 eye 的组号为 3,那么 我想将数字 3 添加到第 4 行的新列中。
请注意在这种情况下,单个文档可以映射到同一组中的两个项目。
df[23,17:21]
sinus sore sports symptoms throat
0 1 0 0 1
【问题讨论】:
-
这很不优雅,但你能不能不这样做:ifelse[df$eye == "1", "3", "0")?对每一列重复,但相应地更改替换编号。最好使用 sapply 和查找表,但我还没有解决。
-
@lawyeR 谢谢,我用不那么优雅的方式做到了。