gpt4 book ai didi

r - 基于多个列计算排名,具有优先规则

转载 作者:行者123 更新时间:2023-12-04 15:23:28 25 4
gpt4 key购买 nike

<分区>

我有这样一个数据框

df <- expand.grid(0:1, 0:1, 0:1, 0:1)
df
Var1 Var2 Var3 Var4
1 0 0 0 0
2 1 0 0 0
3 0 1 0 0
4 1 1 0 0
5 0 0 1 0
6 1 0 1 0
7 0 1 1 0
8 1 1 1 0
9 0 0 0 1
10 1 0 0 1
11 0 1 0 1
12 1 1 0 1
13 0 0 1 1
14 1 0 1 1
15 0 1 1 1
16 1 1 1 1

我正在尝试根据 Var1、Var2、Var3、Var4 上的某些条件创建一个 Rank

排名优先顺序由变量决定

  • Var1 列具有最高优先级,如果它的值为 1,则它的排名更高
  • Var2Var3Var4
  • 有更高的偏好
  • Var1Var2Var3Var4
  • 有更高的优先级
  • Var3Var4 没有偏好,仅用作排名的计数

如果任何行的 Var3Var4 计数相同,则它们以相同的数字排名。

我的期望输出

   Var1 Var2 Var3 Var4 rank
1 0 0 0 0 12
2 1 0 0 0 6
3 0 1 0 0 9
4 1 1 0 0 3
5 0 0 1 0 11
6 1 0 1 0 5
7 0 1 1 0 8
8 1 1 1 0 2
9 0 0 0 1 11
10 1 0 0 1 5
11 0 1 0 1 8
12 1 1 0 1 2
13 0 0 1 1 10
14 1 0 1 1 4
15 0 1 1 1 7
16 1 1 1 1 1

我正在尝试手动执行此操作,但效率不高

df %>%
mutate(rank = case_when(
Var1 == 1 & Var2 == 1 & Var3 == 1 & Var4 == 1~ "1",
Var1 == 1 & Var2 == 1 & Var3 == 1 & Var4 == 0~ "2",
TRUE ~ ""
))

我想将逻辑应用于更大的数据集。有没有一种有效的方法来做到这一点?有人可以指出我正确的方向吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com