在大型数据集中,是否有任何快速方法可以识别重复的数据记录,并在 R 中以类似的重复模式对记录进行分桶?

雪莉酒

假设我有一个这样的数据框:

my_df<- data.frame(mat1=c(1,2,2,2,1,2,2),
               mat2=c(5,4,3,1,5,4,4),
               mat3=c(4,1,6,9,4,1,1),
               mat4=c(1,2,6,9,1,2,2))

我实际上知道如何识别重复,这给了我以下内容:

   mat1 mat2 mat3 mat4 Repeat
1    1    5    4    1   TRUE
2    2    4    1    2   TRUE
3    2    3    6    6  FALSE
4    2    1    9    9  FALSE
5    1    5    4    1   TRUE
6    2    4    1    2   TRUE
7    2    4    1    2   TRUE

我想对类似的模式进行分类,以生成如下类:

  mat1 mat2 mat3 mat4 Repeat repeat_class
1    1    5    4    1   TRUE            1
2    2    4    1    2   TRUE            2
3    2    3    6    6  FALSE            0
4    2    1    9    9  FALSE            0
5    1    5    4    1   TRUE            1
6    2    4    1    2   TRUE            2
7    2    4    1    2   TRUE            2

其中,repeat_class=0 显示非重复数据记录,repeat_class=1,2 等标识在数据记录中找到的相似模式。

我可以在 for 循环中做到这一点,但对于大型数据集,它只是花费太长时间。我想知道在 R 中是否有更快的方法来做到这一点?

阿克伦

这是.GRPfrom 的一种选择data.table我们按names'my_df'的分组,并将( :=).GRP行数大于1的值分配给'repeat_class'

library(data.table)
setDT(my_df)[, repeat_class := .GRP * (.N > 1), by = names(my_df)]
my_df
#   mat1 mat2 mat3 mat4 repeat_class
#1:    1    5    4    1            1
#2:    2    4    1    2            2
#3:    2    3    6    6            0
#4:    2    1    9    9            0
#5:    1    5    4    1            1
#6:    2    4    1    2            2
#7:    2    4    1    2            2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档