gpt4 book ai didi

r - 使用 R,如何在数据帧的单列中标记连续的重复值

转载 作者:行者123 更新时间:2023-12-04 11:22:03 26 4
gpt4 key购买 nike

这是我的第一篇文章,我是编程和 R 的新手。

我正在尝试创建一个新列来标记或标记单独列中顺序重复的值。

df <- c(2,2,2,2,3,4,3,4,3,4,2,3,7,7,7))

使用重复函数返回以下结果:

数据.frame(值= df,标志=重复(df))

   value  flag  
1 2 FALSE
2 2 TRUE
3 2 TRUE
4 2 TRUE
5 3 FALSE
6 4 FALSE
7 3 TRUE
8 4 TRUE
9 3 TRUE
10 4 TRUE
11 2 TRUE
12 3 TRUE
13 7 FALSE
14 7 TRUE
15 7 TRUE

我想要的是:
   value  flag  
1 2 TRUE
2 2 TRUE
3 2 TRUE
4 2 TRUE
5 3 FALSE
6 4 FALSE
7 3 FALSE
8 4 FALSE
9 3 FALSE
10 4 FALSE
11 2 FALSE
12 3 FALSE
13 7 TRUE
14 7 TRUE
15 7 TRUE

我的数据集有超过 200 万个观测值,因此理想情况下该解决方案将是有效的。

谢谢 ,
约翰

最佳答案

rlerep 相结合,您将得到您想要的

rl <- rle( df )
rep( rl$lengths != 1 , times = rl$lengths )
# [1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
# [15] TRUE

我相信 rle相当有效。

2e6 长度向量上的计时(MBP 2008 年末):
system.time({ rl <- rle( df )
res <- rep( rl$lengths != 1 , times = rl$lengths )
})
# user system elapsed
# 0.449 0.106 0.559

关于r - 使用 R,如何在数据帧的单列中标记连续的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17352657/

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