【问题标题】:Assigning column values based on which value is highest in a row of three other columns in R根据 R 中其他三列的一行中哪个值最高来分配列值
【发布时间】:2017-06-03 12:52:17
【问题描述】:

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

我有三种产品的购买频率:A B 和 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

如果有人可以帮助我,那就太棒了。

提前致谢!

【问题讨论】:

  • max.col(df[-1])-1

标签: r frequency calculated-columns


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多