如何使用 dplyr 对列进行范围分组?

2024-01-24

我想根据列对 data.table 进行分组range值,我该如何使用 dplyr 库来做到这一点?

例如我的数据表如下:

library(data.table)
library(dplyr)
DT <- data.table(A=1:100, B=runif(100), Amount=runif(100, 0, 100))

现在我想以B列0.05的间隔将DT分为20组,并统计每组中有多少行。例如,任何 B 列值在 [0, 0.05) 范围内的行将形成一个组; B 列值在 [0.05, 0.1) 范围内的任何行将形成另一个组,依此类推。有没有一种有效的方法来完成这个小组功能?

非常感谢。

----------------------------- 关于 akrun 的回答的更多问题。 感谢阿克伦的回答。我有一个关于“剪切”功能的新问题。如果我的 DT 如下所示:

DT <- data.table(A=1:10, B=c(0.01, 0.04, 0.06, 0.09, 0.1, 0.13, 0.14, 0.15, 0.17, 0.71)) 

使用以下代码:

DT %>% 
  group_by(gr=cut(B, breaks= seq(0, 1, by = 0.05), right=F) ) %>% 
  summarise(n= n()) %>%
  arrange(as.numeric(gr))

我期望看到这样的结果:

          gr n
1   [0,0.05) 2
2 [0.05,0.1) 2
3 [0.1,0.15) 3
4 [0.15,0.2) 2
5 [0.7,0.75) 1

但我得到的结果是这样的:

          gr n
1   [0,0.05) 2
2 [0.05,0.1) 2
3 [0.1,0.15) 4
4 [0.15,0.2) 1
5 [0.7,0.75) 1 

看起来值 0.15 没有正确分配。对此有什么想法吗?


我们可以用cut进行分组。我们在其中创建“gr”列group_by, use summarise创建每个组中的元素数量 (n()),并命令输出(arrange)基于“gr”。

library(dplyr)
 DT %>% 
     group_by(gr=cut(B, breaks= seq(0, 1, by = 0.05)) ) %>% 
     summarise(n= n()) %>%
     arrange(as.numeric(gr))

由于初始对象是data.table,这可以通过使用来完成data.table方法(包括@Frank的建议使用keyby)

library(data.table)
DT[,.N , keyby = .(gr=cut(B, breaks=seq(0, 1, by=0.05)))]

EDIT:

根据OP帖子中的更新,我们可以减去一个小数字seq

lvls <- levels(cut(DT$B, seq(0, 1, by =0.05)))
DT %>%
   group_by(gr=cut(B, breaks= seq(0, 1, by = 0.05) -
                 .Machine$double.eps, right=FALSE, labels=lvls)) %>% 
   summarise(n=n()) %>% 
   arrange(as.numeric(gr))
#          gr n
#1   (0,0.05] 2
#2 (0.05,0.1] 2
#3 (0.1,0.15] 3
#4 (0.15,0.2] 2
#5 (0.7,0.75] 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 dplyr 对列进行范围分组? 的相关文章

  • 在闪亮仪表板中显示/隐藏菜单项

    当进入应用程序时 我需要隐藏一个菜单项 当用户选择某个值时 菜单项必须出现 我努力了shinyjs功能hidden 并且它隐藏了一个 menuItem 但是当使用show or toggle 菜单项不会出现 我发现了Rshinydashbo
  • R、GeoJSON 和 Leaflet

    我最近从 R Bloggers com 的帖子中了解了 leafletjs com 我想要实现的一个此类教程是使用传单创建交互式分区统计图 http leafletjs com examples choropleth html http l
  • glmnet R 包中的 cv.glmnet 出现“drop(y %*% rep(1, nc)) 错误”错误

    我有一个返回 cv glmnet 模型的 auc 值的函数 尽管不是大多数时间 但在执行 cv glmnet 函数时 它经常返回以下错误 下降误差 y 代表 1 NC 在为函数 drop 选择方法时评估参数 x 时出错 y 中的错误 rep
  • 展平 ggplot2 中的 alpha 通道

    ggplot2 的某些对象 函数 支持 alpha 通道 http docs ggplot2 org current geom point html http docs ggplot2 org current geom point html
  • 不同大小组的高效递归随机抽样

    这个问题是我之前关于递归随机抽样问题的后续问题高效的递归随机采样 https stackoverflow com questions 69824065 efficient recursive random sampling 当组大小相同或每
  • lme4:如何指定 2 个与随机截距的相关性,而不添加随机斜率之间的相关性

    重新发布自stats stackexchange com https stats stackexchange com q 195385 33560 我试图在 R 的 lme4 包中指定一个模型 其中随机截距和随机斜率之间有 2 个相关性 但
  • 什么是 data.frame 可以做而 data.table 不能做的事情?

    我刚刚开始使用 R 并遇到了 data table 我发现它很棒 一个非常天真的问题 我可以忽略 data frame 来使用 data table 以避免两个包之间的语法混淆吗 来自数据表常见问题解答 http datatable r f
  • 匹配向量内的向量

    I have vec1 lt c 0 0 0 1 1 0 1 1 1 0 0 1 vec2 lt c 1 1 我预计 magicFUN x vec1 y vec2 1 4 7 8 这意味着我想要一个完整向量在另一个向量内的位置 match
  • 为闪亮的应用程序创建桌面图标

    当我在基本 R 提示中提供以下代码时 我会在浏览器中打开一个闪亮的应用程序 shiny runApp C Myapp 我使用 Windows 7 我试图创建一个桌面图标 以避免我的客户每次想要使用该应用程序时都键入上述代码 我创建了一个桌面
  • 根据绘图单击事件对数据框进行子集化

    我有下面的数据框 Name lt c John Bob Jack Number lt c 3 3 5 NN lt data frame Name Number 还有一个简单闪亮的应用程序 可以从中创建一个绘图直方图 我的目标是单击直方图的一
  • R Plotly 禁用图例单击和图例双击

    我想使用 R Plotly 从服务器端禁用绘图图例选择 我们看here https community plot ly t disable legend click functionality hiding traces 1345 2可以使
  • 将 R 传单地图保存为 html:不包括图块

    我正在尝试使用 saveWidget 或将 rmd 文件输出到 html 来保存 R 传单地图 如下所述 将传单输出保存为 html https stackoverflow com questions 30110377 saving lea
  • R:使用 as.formula 修复模型中的模型调用

    我有一个gls模型 其中我将公式 来自另一个对象 分配给模型 equation lt as formula aic obj row model gt equation temp avg I year 1950 mod1 lt gls equ
  • 如何重试错误语句?

    如果某个语句出错 我如何简单地告诉 R 重试该语句几次 例如 我希望做类似的事情 tryCatch dbGetQuery Query database error function e if is locking error e If da
  • 在 R 中使用科学记数法和 xtable

    我将 data frame 传递给 xtable dat table lt xtable dat 1 20 digits 10 我宁愿使用科学记数法 而不是像那样显示数字 我该怎么做呢 看过了 但我发现的只是R 格式化xtable中的数字
  • 如何在 ggplot2 中向 x 轴添加特定值?

    我正在尝试在 ggplot2 中绘制图表 我希望 x 轴显示 2 84 以及下面键入的序列 除了在 Breaks 中输入所有精确值之外 还有其他方法吗 我尝试了谷歌 但它没有解决我的问题 scale x continuous limits
  • 整理包中的字段说明

    我很抱歉 因为我知道这个答案可能出现在编写 R 包的手册中 但在我阅读和查看其他包的整理字段时 我无法 100 弄清楚该字段的用途 用简单的语言 我的是英语 来看 包的描述文件中的整理字段有什么作用 人们想在那里放什么 我认为这来自于某个时
  • 通过排列进行多组测试

    我有一个 df 其中包含与两个实验相关的两组值 value 1 和 value 2 一个实验包含两组 0 和 1 另一个实验包含三组 0 1 2 test group Value 1 Value 2 AA 0 15 1 11 2 AA 0
  • 如何将带有几行代码的字符数组转换为 data.frame?

    我有以下数组 my list lt c Jan 01 Dec 31 00 00 24 00 Jan 01 Jun 30 12 00 18 00 Jul 06 Dec 31 09 00 19 00 导致以下结果的最短代码是什么 x1 x2 x
  • 如何解决 R 估计中的整数溢出错误

    我正在尝试使用估计模型speedglm在 R 中 数据集很大 约 6988 万行和 38 列 行数和列数相乘得到约 27 亿 超出了整数限制 我无法提供数据 但以下示例重现了该问题 library speedglm large exampl

随机推荐

  • TypeError: f[s] 不是 jquery 表单提交的函数

    我试图获取一个以迂回方式提交的表单 因为我需要它在提交之前附加新的输入 由于将附加内容放入实际的 form submit 函数中不会收集它们进行发布 因此我添加了一个 html 按钮来调用 SubmitCheck 然后提交实际的函数 fun
  • 使用cordova文件插件访问android内部存储

    我正在尝试制作一个 Android 应用程序 到目前为止 它正在使用本机录音机来录制音频 其路径是 storage emulated 0 Sounds 中的声音文件 现在该应用程序正在使用文件传输 cordova 插件 其根目录是 data
  • 传递到cursor.callproc的字符串变得未知(psycopg2、python 2.7、postgres 9.3)

    由于某种原因 将字符串从 Python 传递到 Postgres 函数并使用 psycopg2 游标调用它会导致该函数无法识别 因为参数未知 该功能非常简单 如下所示 CREATE OR REPLACE FUNCTION text test
  • Maven:运行命令行应用程序时使用存储库中的依赖项?

    我使用 Maven 来构建我的命令行应用程序 现在我要将其作为 jar 文件分发 并且我需要处理应用程序的依赖项 我不想按照描述在 jar 文件中包含所有依赖项here http www sonatype com books mvnex b
  • $SAFE = 4 的 ruby​​ 中可能存在哪些漏洞?

    SAFE 4 的 ruby 中可能存在哪些漏洞 我立刻就知道 XSRF 是可能的 因为攻击与 受污染的变量 无关 而与 http 请求的来源无关 我知道使用像 md5 这样的弱加密算法不会被接受 你还知道其他人吗 代码示例非常感谢 SAFE
  • 为 iPhone 应用程序创建自定义 UITabBar 真的很酷吗?

    我最近做了很多关于如何获得不同的外观和良好的效果的研究UITabBar在我的 iPhone 应用程序上 但不幸的是我只找到有关如何替换背景颜色等的内容 嗯 我已经检查过这个应用程序叫做Momento http www momentoapp
  • 如何选择最里面的元素?

    在 jQuery 中 我如何尽可能深入地进入 HTML 树 为简单起见 我只有一条向下的路径 相关但额外的好处 如何找到具有多个向下路径的最深元素 table tr td div I want to change this informat
  • 从 C# 打印信封

    我正在尝试制作一个可以打印信封 自定义和普通 的应用程序 我正在设置要打印的尺寸和页面 但是当我打印或查看打印预览时 页面尺寸仍然相同 基本上 该应用程序是 3 个组合框 0 选择自定义尺寸 1 选择打印机 2 选择送纸器 和按钮 打印 我
  • 尝试处理事件“loadedData”时出错:deleteRecord 后对象未更新

    使用最新版本的 ember js 和 ember data 我在删除记录时遇到问题 我的路线 App ListContactsRoute Em Route extend model function App Contact find set
  • Getters 和 Setters:代码味道、必要之恶或没有它们就活不下去 [重复]

    这个问题在这里已经有答案了 可能的重复 Allen Holub 写道 你永远不应该使用 get set 函数 他是对的吗 https stackoverflow com questions 996179 allen holub wrote
  • 如果用户使用 Google/Facebook 登录,我可以允许他们在注册时创建自定义用户名吗?

    我刚刚实施了 FirebaseauthUI在应用程序中 但我希望我的用户能够拥有不是他们在这些帐户上的名字的用户名 显示名称 而不强迫他们稍后更改 如果可能的话 我将在哪里以及如何实施 是的你可以 正如 Gast n Saill n 在他的
  • Spring Boot 生产监控

    Spring Boot Actuator公开了已部署容器的大量指标和信息 然而 生产操作人员可能不想在浏览器上盯着纯 JSON 对象 在生产中监控这一点的良好 标准 工具是什么 这包括图表 警报触发器等 spring boot admin
  • 对不同的 JUnit 测试使用不同的类加载器?

    我有一个 Singleton Factory 对象 我想为其编写 JUnit 测试 Factory 方法根据类路径上属性文件中的类名决定要实例化哪个实现类 如果未找到属性文件 或者属性文件不包含类名键 则该类将实例化默认实现类 由于工厂保留
  • 需要样式表并使用 browserify 将它们作为链接标签注入 html

    我想尝试使用 browserify 来构建我的项目 我可以使用相对路径获取 js 文件 然后将这些文件捆绑并缩小 这看起来很酷 但我仍然不清楚 我是否可以自动将该包添加到 html 中 而且 如果我可以用 css 做类似的技巧 以某种方式需
  • 使用 Heroku 的分支策略进行良好的 Git 部署?

    与 Git Heroku Ruby on Rails 一起使用的良好部署策略是什么 目前 我使用原始 Git 存储库的方式是 所有功能 或 故事 首先作为分支检出 然后与 master 合并并推送到 origin 任何推送到 origin
  • g++ 警告:无符号表达式 < 0 的比较始终为 false

    为了编译我的 C 代码 我使用 W标志 这会导致警告 警告 无符号表达式 我相信这被认为是一个错误并在 GCC 4 3 版本上修复 但我正在使用 GCC 4 1 这里明显有问题的代码 void FieldGroup generateCrea
  • MYSQLi bind_result分配太多内存[重复]

    这个问题在这里已经有答案了 我试图从 MYSQL 中获取多行 但是当将变量绑定到结果时 MYSQLi 会耗尽内存来分配 因为它尝试一次获取所有行并缓冲完整的 LONGBLOB 大小 即使不需要也是如此 该错误也已讨论here http bu
  • 三通管破损,采用工艺替代

    我刚刚发现使用流程替换 gt 我对此非常兴奋 但是当我尝试时 它并不总是有效 例如 这有效 cat usr share dict words tee gt tail 1 gt dev null ZZZ 这会导致管道损坏错误 cat usr
  • ASP.NET MVC3 验证问题

    我有以下视图模型 public class Bulletin1ViewModel Required public String NumberDelegations get set Required public String TravelP
  • 如何使用 dplyr 对列进行范围分组?

    我想根据列对 data table 进行分组range值 我该如何使用 dplyr 库来做到这一点 例如我的数据表如下 library data table library dplyr DT lt data table A 1 100 B