繁体   English   中英

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

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

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

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

所以说我有下表:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM