gpt4 book ai didi

r - 如何计算唯一玩家的数量(允许重复输入时)?

转载 作者:行者123 更新时间:2023-12-01 13:19:44 25 4
gpt4 key购买 nike

我正在尝试计算允许每个玩家重新进入游戏的实验中唯一玩家的数量。这是数据的样子

x <- read.table(header=T, text="group timepast Name NoOfUniquePlayer
1 0.02703 A 1
1 0.02827 B 2
1 0.02874 A 2
1 0.02875 A 2
1 0.02875 D 3
2 0.03255 M 1
2 0.03417 K 2
2 0.10029 T 3
2 0.10394 T 3
2 0.10605 K 3
2 0.16522 T 3
3 0.11938 E 1
3 0.12607 F 2
3 0.13858 E 2
3 0.16084 G 3
3 0.19830 G 3
3 0.24563 V 4")

原始实验数据包含前3列,第一列是每个实验的组数(这里是3组),第二列是每个玩家加入实验的归一化时间(我把这一列从小到大排序了到最大),第三个是每个玩家的名字(每个玩家只加入一个组)。

我想要生成的是最后一列,名为 # of unique players,例如对于第 1 组,记录了五名玩家 (A B A A D) 但只有 3 名唯一玩家 (A B D),玩家 A 开始游戏(第一行)并在玩家 B 玩(第二行)后重新加入(第三行),然后玩家A再次加入游戏(第4行因此被记录),最后玩家D进入并完成了整个游戏。

谁能帮我弄清楚如何用 R 编程来解决这个问题?

最佳答案

我认为这会给你你想要的(我认为你的第 2 组示例中有错误)

x$uniquenum <- unlist(
tapply(
x$Name,
x$group,
function(y)
cummax(as.numeric(factor(y,levels=y[!duplicated(y)])))
)
)

group timepast Name NoOfUniquePlayer uniquenum
1 1 0.02703 A 1 1
2 1 0.02827 B 2 2
3 1 0.02874 A 2 2
4 1 0.02875 A 2 2
5 1 0.02875 D 3 3
6 2 0.03255 M 1 1
7 2 0.03417 K 2 2
8 2 0.10029 T 3 3
9 2 0.10394 T 3 3
10 2 0.10605 K 4 3
11 2 0.16522 T 4 3
12 3 0.11938 E 1 1
13 3 0.12607 F 2 2
14 3 0.13858 E 2 2
15 3 0.16084 G 3 3
16 3 0.19830 G 3 3
17 3 0.24563 V 4 4

关于r - 如何计算唯一玩家的数量(允许重复输入时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14995206/

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