我想根据列的最高值将列分配给特定的组,即Cluster1、Cluster2或Cluster3。功能建议(dplyr?)来看看是赞赏。
Group Sample1 Sample2 Sample3
1 Cluster1 0.1 0 0.1
2 Cluster2 0.4 0.3 0.01
3 Cluster3 0 0.9 0.92
预期产量
Sample1 Cluster2
Sample2 Cluster3
Sample3 Cluster3
df <- structure(list(Group = c("Cluster1", "Cluster2", "Cluster3"),
Sample1 = c(0.1, 0.4, 0), Sample2 = c(0, 0.3, 0.9), Sample3 = c(0.1,
0.01, 0.92)), class = "data.frame", row.names = c("1", "2", "3"))
5条答案
按热度按时间pexxcrt21#
转换为长优先并聚合,即
plicqrtu2#
使用
tidyverse
,您可以堆叠这些Sample
列,然后按组堆叠slice_max()
。您可以通过调整
slice_max
中的参数with_ties
(默认为TRUE
)来决定是否保留***ties***。txu3uszq3#
我们可以使用
which.max
和summarise
,如果需要,最后使用pivot_longer
。这样,我们就不必group_by
,如果sample
列太多的话,速度会更慢eimct9ow4#
使用
max.col
+t
,我们可以创建一个类似于它产生
lhcgjxsq5#
另一种方法是在
lapply
中使用which.max
来子集df$Group
。或者使用
vapply
。或者使用索引并创建一个
data.frame
。基准
结果