根据 R 中其他三列的行中哪个值最高来分配列值

Assigning column values based on which value is highest in a row of three other columns in R

我想在 R 中执行以下操作:

我有三种产品的购买频率:A B 和 C(客户是这里的标识符)。现在我想创建第四列,如果产品 A 的购买频率最高,则每行的值为 0,如果产品 B 的购买频率最高,则值为 1,如果产品 C 的购买频率最高,则值为 2购买频率。理想情况下,如果两种甚至所有三种产品的购买频率同样高,我想随机分配三个值之一。当然,如果只有两个类别(而不是三个)最高且相等,则只能对三个类别中的两个进行这种随机分配。

假设我有以下 table:

customer    A    B    C
1           2    3    4
2           4    6    5
3           4    2    4
4           4    2    4
5           4    4    4
6           2    2    2
7           4    4    4

我想创建(例如)以下列:

highest_purchase_freq
2
1
0
2
0
1
2

如果有人能帮助我,那就太好了。

提前致谢!

nnetwhich.is.max 功能可能就是您要查找的功能?
它找到向量中的最大位置,随机打破平局。

set.seed(12345)
library(nnet)
df$highest_purchase_freq <- apply(df[2:4], 1, which.is.max)-1
df  

  customer A B C highest_purchase_freq
1        1 2 3 4                     2
2        2 4 6 5                     1
3        3 4 2 4                     2
4        4 4 2 4                     2
5        5 4 4 4                     2
6        6 2 2 2                     2
7        7 4 4 4                     1