gpt4 book ai didi

r - 在 R 中标记最后日期

转载 作者:行者123 更新时间:2023-12-02 08:09:42 24 4
gpt4 key购买 nike

我有包含游戏 session 数据的数据集(id、 session 计数、 session 的平均秒数和每个 id 的 session 日期)。这是 mydat 的示例:

mydat=read.csv("C:/Users/Admin/desktop/rty.csv", sep=";",dec=",")

我的数据

 structure(list(udid = c(74385162L, 79599601L, 79599601L, 91475825L, 
91475825L, 91492531L, 92137561L, 96308016L, 96308016L, 96308016L,
96308016L, 96308016L, 96495076L, 97135620L, 97135620L, 97135620L,
97135620L, 97135620L, 97135620L, 97135620L, 97135620L, 97135620L,
97135620L, 97165942L), count = c(1L, 1L, 1L, 1L, 3L, 1L, 1L,
2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L), avg_duration = c(39L, 1216L, 568L, 5L, 6L, 79L, 9L, 426L,
78L, 884L, 785L, 785L, 22L, 302L, 738L, 280L, 2782L, 5L, 2284L,
144L, 234L, 231L, 539L, 450L), date = structure(c(13L, 3L, 3L,
1L, 1L, 14L, 2L, 11L, 11L, 11L, 12L, 12L, 9L, 7L, 4L, 4L, 5L,
6L, 8L, 8L, 8L, 8L, 8L, 10L), .Label = c("11.10.16", "12.12.16",
"15.11.16", "15.12.16", "16.12.16", "17.12.16", "18.10.16", "18.12.16",
"21.10.16", "26.10.16", "28.11.16", "29.11.16", "31.10.16", "8.10.16"
), class = "factor")), .Names = c("udid", "count", "avg_duration",
"date"), class = "data.frame", row.names = c(NA, -24L))

我需要在看到玩家的每个最后日期后放 1,并在看到此 ID 的其他日期放零。例如 id 96308016 有 5 个观测值。因此,我们将最后的第五个观测值标记为 1,而前 4 个观测值标记为零。如果 id 有 1 个观察值,我们也将其标记为 1,例如 id 74385162

为了更清楚,这里是我的预期输出

udid    count   avg_duration    date    diff
74385162 1 39 31.10.16 1
79599601 1 1216 15.11.16 0
79599601 1 568 15.11.16 1
91475825 1 5 11.10.16 0
91475825 3 6 11.10.16 1
91492531 1 79 8.10.16 1
92137561 1 9 12.12.16 1
96308016 2 426 28.11.16 0
96308016 2 78 28.11.16 0
96308016 1 884 28.11.16 0
96308016 1 785 29.11.16 0
96308016 1 785 29.11.16 1
96495076 1 22 21.10.16 1
97135620 2 302 18.10.16 0
97135620 1 738 15.12.16 0
97135620 1 280 15.12.16 0
97135620 1 2782 16.12.16 0
97135620 1 5 17.12.16 0
97135620 1 2284 18.12.16 0
97135620 1 144 18.12.16 0
97135620 1 234 18.12.16 0
97135620 1 231 18.12.16 0
97135620 1 539 18.12.16 1
97165942 1 450 26.10.16 1

怎么做到的?

最佳答案

您可以执行以下操作:

library(dplyr)
mydat = mydat %>%
group_by(udid) %>%
mutate(diff=ifelse(row_number()==n(),1,0)) %>%
as.data.frame()

输出:

       udid count avg_duration     date diff
1 74385162 1 39 31.10.16 1
2 79599601 1 1216 15.11.16 0
3 79599601 1 568 15.11.16 1
4 91475825 1 5 11.10.16 0
5 91475825 3 6 11.10.16 1
6 91492531 1 79 8.10.16 1
7 92137561 1 9 12.12.16 1
8 96308016 2 426 28.11.16 0
9 96308016 2 78 28.11.16 0
10 96308016 1 884 28.11.16 0
11 96308016 1 785 29.11.16 0
12 96308016 1 785 29.11.16 1
13 96495076 1 22 21.10.16 1
14 97135620 2 302 18.10.16 0
15 97135620 1 738 15.12.16 0
16 97135620 1 280 15.12.16 0
17 97135620 1 2782 16.12.16 0
18 97135620 1 5 17.12.16 0
19 97135620 1 2284 18.12.16 0
20 97135620 1 144 18.12.16 0
21 97135620 1 234 18.12.16 0
22 97135620 1 231 18.12.16 0
23 97135620 1 539 18.12.16 1
24 97165942 1 450 26.10.16 1

关于r - 在 R 中标记最后日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48429407/

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