根据 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
如果有人能帮助我,那就太好了。
提前致谢!
nnet
的 which.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
我想在 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
如果有人能帮助我,那就太好了。
提前致谢!
nnet
的 which.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