如何对数据进行分箱以删除低计数?

2023-12-23

我想出于保护隐私的目的使用装箱来处理数据。数据涉及数字整数,并且必须以频率高于最小值的方式进行分箱,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))

我一直在思考的逻辑类型是这样的,但我不知道如何实现:

  1. 统计整数频率并按整数升序排列
  2. 如果计数 >=x在第一行,保持相同。如果计数 x,依次与下一个整数组合,直到 count >=x
  3. 迭代剩余行
  4. 检查最后一个 bin 的计数是否 >=x,如果没有,则合并最后 2 个 bin
  5. 创建包含分箱结果的 treated_column

递归函数,分成永远不小于的组min_size(但是是贪婪的并且不保证不能创建更多的组):

recursive_mingrp <- function(x, min_size = 6L) {
 # Recursive helper function 
 find_grps <- \(x) {
   low <- which(x < median(unique(x)))
   if (length(unique(x)) == 1L || length(low) < min_size || length(x)-length(low) < min_size) {
     limits[length(limits) + 1L] <<- max(x)    
     return(NULL)
   }
   find_grps(x[low])
   find_grps(x[-low])
 }
 
 x      <- sort(x)
 limits <- list()
 find_grps(x)
 if (length(limits) == 1L) limits <- range(x)
 cut(x, unlist(limits), include.lowest=T) 
}

Example

set.seed(10)
table(recursive_mingrp(sample(10:1000, 1000, replace = TRUE), 33))
  #  [66,123]   (123,191]   (191,258]   (258,329]   (329,388]   (388,448]   (448,519] 
  #        67          63          58          65          59          58          61 
  # (519,582]   (582,609]   (609,636]   (636,686]   (686,716]   (716,748]   (748,809] 
  #        62          34          33          71          33          40          58 
  # (809,883]   (883,940] (940,1e+03] 
  #        59          60          58
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对数据进行分箱以删除低计数? 的相关文章

  • 按钮:带滚动条的下载按钮仅下载几行

    我正在处理超过 100 000 行的表并使用DT包裹 开发版本0 1 56 在 Shiny App 中将其可视化 此外我正在使用DT扩展如下 Buttons 下载不同格式的数据 然而虽然Scroller扩展程序也已激活 我只能下载几行 不是
  • 无法安装bigrf包

    我在安装 bigrf R 软件包时遇到了一些极其令人沮丧的困难 我已经尝试过以下方法 install packages bigrf repo https github com aloysius lim bigrf git type sour
  • 添加不同 data.frame 中缺失的列并填充 0 [重复]

    这个问题在这里已经有答案了 我有以下情况 df1 a b c d 1 2 3 4 df2 a c 5 6 我想要的结果是 用 df1 中缺失的列填充第二个 data frame 并用零填充它们 所以结果应该是 df3 a b c d 5 0
  • R Shinydashboard 根据选项卡选择显示/隐藏 UI 元素

    如果有人可以提供帮助 我正在努力满足要求 我必须根据用户的选项卡面板选择在仪表板侧栏上显示 隐藏一些元素 这是 UI 代码的一部分 可让您了解我的应用程序的结构 我需要仅在 tabpPanel 2 上显示 Fourthoutput Fift
  • R - Rstudio - 如果生成警告/错误,则使 R 播放声音

    我正在运行一个循环遍历股票对组合列表的脚本 偶尔 由于对组合之间的数据长度不同而产生错误 脚本会停止运行 我只是将不匹配的股票从考虑中删除 Error in model frame default formula stckY stckX 0
  • 匹配字符串在多列上循环

    我有来自一项开放式调查的数据 我有一个注释表和一个代码表 代码表是一组主题或字符串 我正在尝试做的事情 检查代码表中相关列中是否存在开放式注释中的单词 字符串 在评论表中为特定主题添加一个新列 并添加一个二进制 1 或 0 来表示已标记哪些
  • R 用簇绘制热图,但隐藏树状图

    默认情况下 Rheatmap将聚集行和列 mtscaled as matrix scale mtcars heatmap mtscaled scale none 我可以禁用集群 heatmap mtscaled Colv NA Rowv N
  • 使用“kde”函数进行 R 中的 5-D 核密度估计

    我想通过使用 R 的 ks 库中的 kde 函数来执行 5 维数据 x y z 时间 大小 的核密度估计 在它的手册中 它说它可以执行核密度估计1 至 6 维数据 手册第 24 页 http cran r project org web p
  • R中的预测和预测函数之间的区别

    两者之间有什么区别吗predict and forecast R 中的函数 如果是 在哪些具体情况下应该使用它们 Intro predict 适用于多种 R 对象 模型 基础库的一部分 forecast 对于时间序列 预测包的一部分 参见示
  • 如何禁用“保存工作区图像?” R 中的提示?

    当我退出交互式 R shell 时 它每次都会显示一个烦人的提示 gt gt Save workspace image y n c n 我总是对此回答 不 因为如果我想保存我的工作 我就会这么做before试图退出 如何去掉这个提示呢 No
  • Pandas - 通过在另一个数据框中查找来替换值

    我需要用 Python3 解决 pandas 数据框中的问题 我有两个数据框 第一个是 ID Name Linked Model 1 Linked Model 2 Linked Model 3 0 100 A 1111 0 1112 0 N
  • mutate() 尝试在使用美元符号运算符时使用全局变量的值进行提取

    我使用得到了有趣的结果mutate with a 当全局环境中碰巧存在与要提取的元素同名的变量时进行提取 我正在运行 R 3 1 3 和 dplyr 0 4 3 9 这工作正常 library dplyr df lt data frame
  • 根据用户输入将 n 个反应式单选按钮添加到闪亮的应用程序

    我正在尝试创建一个闪亮的应用程序 用户可以在其中从数据框中选择变量以便对数据进行子集化 输出 最终 将是包含用户子集的数据表 我需要根据用户为子集选择的变量数量创建 n 个输入框 理想情况下 输入框将是动态单选按钮 用于子集因子 我还没有开
  • 替换因子列中的

    我想更换
  • magrittr 管道中的 WOE

    如何将下面的证据代码权重放入 magrittr 管道中 df gt 我尝试过的一切似乎都不起作用 df library Information library magrittr df a c aa bb cc aa aa aa bb cc
  • 将公式传递给 R 中的函数?

    对此的任何帮助将不胜感激 我正在使用 Lumley 调查包 并试图简化我的代码 但遇到了一些小障碍 在我的代码中调用包中的 svymean 函数如下 其中第一个参数是指示我想要哪些变量的公式 第二个参数是该数据集 svymean hq eh
  • 在 R 中编写多重积分函数

    为了将以下内容转换为函数 我想知道如何用 R 代码编写以下二重积分 bar x mu 假设pi0 and pi1以向量化方式实现函数 pi 0 和 pi 1 可能的解决方案是 integral lt function n mu s pi0
  • 将 str.contains 映射到 pandas DataFrame

    python 初学者 我正在寻找创建字符串的字典映射以及关联的值 我有一个数据框 想要创建一个新列 如果字符串匹配 则会将该列标记为 x df pd DataFrame comp dell notebook dell notebook S3
  • R + ggplot2 - 无法分配大小为 128.0 Mb 的向量

    我有一个 4 5MB 9 223 136 行 的文件 其中包含以下信息 0 0 0 0147938 3 67598e 07 0 0226194 7 35196e 07 0 0283794 1 10279e 06 0 033576 1 470
  • dplyr::mutate 添加多个值

    网上有几个与此相关的问题dplyr Github 存储库 https github com hadley dplyr已经 并且至少有一个相关的问题 但没有一个问题完全涵盖了我的问题 我认为 在 dplyr mutate 调用中添加多列 ht

随机推荐

  • 如何抑制“避免使用捆绑版本的 Google Play 服务 SDK”警告?

    我在 Android 应用程序中使用 Google Play 服务 因此我的应用程序中有依赖项build gradle compile com google android gms play services 10 2 1 但 Androi
  • 如何从标签函数调用原生 es6 模板字符串替换?

    我正在为模板文字编写一个 es6 标记函数 它首先检查字符串中的条件 如果未找到条件 则仅将模板文字解释为未标记 我很好奇 从我的标签函数中 是否有一种方法可以调用浏览器的本机模板文字函数 我认为这会比我自己实现的功能 Bonue 有了这个
  • 向 Word 文档添加标题?

    我想使用 PowerShell 将自定义标头添加到 doc 文件 我的意思是实际标头 而不是标题 这应该有效 Word New Object ComObject Word Application wdSeekPrimaryHeader 1
  • qDebug() 的错误输出(UTF - 8)

    我正在尝试存储带有特殊字符的字符串 qDebug lt lt ABCg 输出 这里我什至无法输入正确的输出 在 之后缺少一些垃圾 ABCg 我怀疑有一些 UTF 8 Latin1 ASCII 但找不到输出到控制台 文件的设置 我在代码中写的
  • 为什么每次重新部署时都需要刷新连接池?

    我已经通过 Glassfish 成功连接到远程 MySQL 服务器 但是每次更改代码或 XHTML 文件时 我都需要打开 Glassfish 的管理员面板并刷新连接池 否则会出现以下错误我只是刷新页面 有人经历过这个吗 如果需要的话我可以发
  • 从非主线程绘制到主窗体画布

    我正在尝试为我的学校项目制作一款街机游戏 基本思想是在主线程之外的其他线程中完成所有数学和绘图 并且仅将主线程用于输入例程 绘图是通过保存在外部单元中的过程完成的 并且是通过创建位图 然后在位图上绘制部分环境 最后在主窗体的画布上绘制位图来
  • RoundRobin 函数方法 - 为什么我的函数有副作用?

    客观的 我正在尝试创建一个循环算法 https en wikipedia org wiki Round robin scheduling https en wikipedia org wiki Round robin scheduling
  • 覆盖查询集的更新方法 - Django

    我们如何更改 django 中查询集的 update 方法的默认过程 因为它不会为每个对象调用 save 方法 由于我已经重写了 save 方法 因此每次更改对象时都需要调用它 我寻找Django 文档 https docs djangop
  • AntiXSS JavaScriptEncode 获取 HTML 编码?

    我刚刚开始使用 AntiXSS 4 3 0 主要是为了使用 Encoder JavaScriptEncode如上所述here http weblogs asp net jongalloway preventing javascript en
  • 如何在默认范围内按相关型号订购? -- 轨道 3.1

    如何编写以下默认范围 class SimilarMerchant lt ActiveRecord Base relationships belongs to merchant belongs to similar merchant fore
  • Java swing 禁用窗口

    I would like to disable the window in my swing application here is a picture to demonstrate what I mean My paint skills
  • jBPM 5:数据库表脚本在哪里?

    我在 JBPM 5 4 中创建了一个关于持久性的简单示例 它运作成功并且 记录已成功插入到创建的架构中的表中 但我的问题是 虽然该表是在架构中创建的 但它还创建了其他三个表 节点实例日志 变量实例日志 进程实例日志 但是创建这些表的脚本在哪
  • 通过Python创建文件和目录

    我在创建目录然后打开 创建 写入指定目录中的文件时遇到问题 我似乎不清楚原因 我正在使用 os mkdir 和 path chap name print Path chap path For debugging purposes if no
  • 使用http而不是https的redirect_uri

    我正在使用 spring stack Spring Boot 2 0 1 RELEASE 来创建一个通过 OAuth2 将用户身份验证 注册委托给 Facebook 的网站 当我单击 使用 facebook 登录 按钮时 我会被重定向到 F
  • jQuery 查找并替换第二个

    我想知道如何查找和替换 div 中的某些文本 但我想查找并替换该文本的第二次出现 例如 您刚刚添加了一个项目 请删除该项目 所以我想找到第二个 项目 并将其替换为我选择的任何文本 JS var compareCount compareWid
  • SQL日期格式和引用混乱

    我有以下测试记录 以下查询结果为 0 条记录 SELECT FROM events dates WHERE start date 21 12 2014 但以下查询结果为 1 条记录 SELECT FROM events dates WHER
  • 用 | 分割字符串java中的分隔符

    我有一个像这样的字符串 1 value 我想拆分该字符串并选择 作为分隔符 我的代码如下所示 String separated line split 我得到的是一个包含所有字符作为一个条目的数组 separated 0 separated
  • 为什么FolderBrowserDialog对话框不滚动到选定的文件夹?

    如该屏幕截图所示 所选文件夹不在视图中 需要向下滚动才能查看所选文件夹 同一对话框显示在不同计算机上可见的选定文件夹 我在两台装有 Windows 7 的计算机上运行它 它在一台计算机上运行正常 但在第二台计算机上运行不正常 它看起来与 W
  • 应用程序委托 - Cocoa

    我想将 applicationDidFinishLaunching 合并到我的可可委托中 我该怎么做 在 iphone SDK 上 applicationDidFinishLaunching 已经在应用程序委托中 但在制作我的 mac 应用
  • 如何对数据进行分箱以删除低计数?

    我想出于保护隐私的目的使用装箱来处理数据 数据涉及数字整数 并且必须以频率高于最小值的方式进行分箱 x 我还想最小化垃圾箱的宽度 以尽可能多地保留数据 最小化 bin 的宽度并没有严格定义 因为这只是避免不必要的数据丢失的一般目标 由于整数