我有一个类似于以下内容的数据集 -
cluster1 cluster2 cluster3
0.0795604798 0.0934697636 -0.396044650
0.0086171605 -0.1467907623 -0.396044650
1.8838058726 -0.1507548515 -0.396044650
我想获取每行的簇号,这将是最大值。看起来应该是这样的 -
value cluster
0.0934697636 cluster2
0.0086171605 cluster1
1.8838058726 cluster1
我在R中这样做。如果我使用以下命令,我会从每一行获得最大值 -
k=colnames(apply(cscore,1,max))
但我不确定如何获取群集名称。
答案 0 :(得分:4)
我们可以使用max.col
获取每行的最大值的列索引,cbind
使用行索引来提取每行中的最大'value'('value'),以及使用列索引获取相应的列名('cluster')。
j1 <- max.col(df1, "first")
value <- df1[cbind(1:nrow(df1), j1)]
cluster <- names(df1)[j1]
res <- data.frame(value, cluster)
res
# value cluster
#1 0.093469764 cluster2
#2 0.008617161 cluster1
#3 1.883805873 cluster1