gpt4 book ai didi

r - 识别重复值,包括 R 中的第一个值

转载 作者:行者123 更新时间:2023-12-01 23:51:44 27 4
gpt4 key购买 nike

我的数据是这样的:

ROW  ID   DATE  
1 1 09/20/2014
2 1 09/21/2014
3 1 09/22/2014
4 1 09/22/2014
5 2 09/19/2014
6 2 09/20/2014
7 2 09/21/2014
8 2 09/21/2014
9 2 09/21/2014
10 3 09/18/2014
11 3 09/19/2014
12 3 09/20/2014
13 3 09/20/2014

我想创建一个列 FL 以通过 ID 识别重复日期,我知道 duplicated() 将识别后续的重复值,但我也想在开始重复之前识别第一个值

我的数据应该是这样的:

ROW  ID   DATE         FL
1 1 09/20/2014 0
2 1 09/21/2014 0
3 1 09/22/2014 1
4 1 09/22/2014 1
5 2 09/19/2014 0
6 2 09/20/2014 0
7 2 09/21/2014 1
8 2 09/21/2014 1
9 2 09/21/2014 1
10 3 09/18/2014 0
11 3 09/19/2014 0
12 3 09/20/2014 1
13 3 09/20/2014 1

因此,对于每个 ID,非重复日期的 FL 值为 0,重复日期的 FL 值为 1。如果您能帮助我使用 R 代码来执行此操作,那就太好了。谢谢。

编辑

这里输入数据:

structure(list(ID = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), 
DATE = structure(c(3L, 4L, 5L, 5L, 2L, 3L, 4L, 4L, 4L, 1L, 2L, 3L, 3L),
.Label = c("9/18/2014", "9/19/2014", "9/20/2014", "9/21/2014", "9/22/2014"),
class = "factor")),
.Names = c("ID", "DATE"), class = "data.frame", row.names = c(NA, -13L))

最佳答案

使用 data.table 包使用这样的东西:

 library(data.table)
setDT(dat)[,FL := (duplicated(DATE) | duplicated(DATE, fromLast = TRUE))*1,ID]
ID DATE FL
1: 1 9/20/2014 0
2: 1 9/21/2014 0
3: 1 9/22/2014 1
4: 1 9/22/2014 1
5: 2 9/19/2014 0
6: 2 9/20/2014 0
7: 2 9/21/2014 1
8: 2 9/21/2014 1
9: 2 9/21/2014 1
10: 3 9/18/2014 0
11: 3 9/19/2014 0
12: 3 9/20/2014 1
13: 3 9/20/2014 1

或者在基础 R 中(使用@akrun propsition):

transform(dat, ave(as.numeric(factor(DATE)), ID, 
FUN=function(x) duplicated(x)|duplicated(x,fromLast=TRUE)))

关于r - 识别重复值,包括 R 中的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26023681/

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