我想出于保护隐私的目的使用装箱来处理数据。数据涉及数字整数,并且必须以频率高于最小值的方式进行分箱,x
.
我还想最小化垃圾箱的宽度,以尽可能多地保留数据。最小化 bin 的宽度并没有严格定义,因为这只是避免不必要的数据丢失的一般目标。由于整数的分布不同,因此 bin 大小将为不均匀.
我希望开发一个可以接受一组整数的函数data$column
和最小计数阈值x
,并返回一组经过处理的整数data$treated_column
.
这是一个最小计数阈值为 3 的示例,显示治疗前后的计数。
set.seed(10)
data <- tibble(column = sample(1:5, 10, replace = TRUE))
data %>% count(column)
expected_data <- data %>% mutate(treated_column = c('3-5','1-2','1-2','3-5','3-5','1-2','1-2','1-2','3-5','3-5'))
expected_data %>% count(treated_column)
这是两个附加数据列,它们更准确地反映了我实际使用的数据类型,可以用作示例。
set.seed(5)
data <- tibble(columnA = sample(1:100, 1000, replace = TRUE),
columnB = sample(10:1000, 1000, replace = TRUE))
我一直在思考的逻辑类型是这样的,但我不知道如何实现:
- 统计整数频率并按整数升序排列
- 如果计数 >=
x
在第一行,保持相同。如果计数 x,依次与下一个整数组合,直到 count >=x
- 迭代剩余行
- 检查最后一个 bin 的计数是否 >=x,如果没有,则合并最后 2 个 bin
- 创建包含分箱结果的 treated_column