在 tidyr/dplyr 中添加零计数行的正确习惯用法

2023-11-26

假设我有一些如下所示的计数数据:

library(tidyr)
library(dplyr)

X.raw <- data.frame(
  x = as.factor(c("A", "A", "A", "B", "B", "B")),
  y = as.factor(c("i", "ii", "ii", "i", "i", "i")),
  z = 1:6
)
X.raw
#   x  y z
# 1 A  i 1
# 2 A ii 2
# 3 A ii 3
# 4 B  i 4
# 5 B  i 5
# 6 B  i 6

我想这样整理和总结:

X.tidy <- X.raw %>% group_by(x, y) %>% summarise(count = sum(z))
X.tidy
# Source: local data frame [3 x 3]
# Groups: x
#
#   x  y count
# 1 A  i     1
# 2 A ii     5
# 3 B  i    15

我知道对于x=="B" and y=="ii"我们观察到计数为零,而不是缺失值。即现场工作人员实际上在那里,但由于没有正计数,因此没有将行输入到原始数据中。我可以通过这样做显式添加零计数:

X.fill <- X.tidy %>% spread(y, count, fill = 0) %>% gather(y, count, -x)
X.fill
# Source: local data frame [4 x 3]
# 
#   x  y count
# 1 A  i     1
# 2 B  i    15
# 3 A ii     5
# 4 B ii     0

但这似乎有点迂回的做事方式。有没有更干净的习惯用法?

只是为了澄清:我的代码已经做了我需要它做的事情,使用spread then gather,所以我感兴趣的是找到一条更直接的路线within tidyr and dplyr.


Since dplyr 0.8你可以通过设置参数来做到.drop = FALSE in group_by:

X.tidy <- X.raw %>% group_by(x, y, .drop = FALSE) %>% summarise(count=sum(z))
X.tidy
# # A tibble: 4 x 3
# # Groups:   x [2]
#   x     y     count
#   <fct> <fct> <int>
# 1 A     i         1
# 2 A     ii        5
# 3 B     i        15
# 4 B     ii        0

这将保留由所有级别的因子列组成的组,因此如果您有字符列,您可能需要转换它们(感谢 Pake 的注释)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 tidyr/dplyr 中添加零计数行的正确习惯用法 的相关文章

  • 如何获得 STAN 中最大似然估计的标准误差?

    我在 Stan 中使用最大似然优化 但不幸的是optimizing 函数不报告标准错误 gt MLb4c lt optimizing get stanmodel fitb4c data win data init inits STAN OP
  • par(mfrow=c(1,2)) 不显示并排密度图[重复]

    这个问题在这里已经有答案了 par mfrow c 1 2 plot 1 12 log y plot 1 2 xaxs i 然而 当我尝试做并排密度图时 图会单独输出 load the stud recs dataset library U
  • R 根据事件更新值

    我最近发布了这个问题 该问题已经与我在笔记本电脑上本地使用的 Mysql 数据库相关 由于我在 Mysql 中没有找到问题的解决方案 其他人似乎也没有找到解决方案 所以我想再次发布它 但现在与 R 相关 我使用带有 RMysql 包的数据库
  • 计算例如具有多列 data.frames 的列表中的平均值

    我有几个 data frames 的列表 每个 data frame 有几列 通过使用mean mylist first dataframe a我可以得到这个 data frame 中 a 的平均值 但是我不知道如何计算列表中存储的所有 d
  • 是否可以通过扫描从控制台读取而不回显字符?

    这是一个示例函数 passwordEntry lt function cat Enter your password pwd lt scan n 1 what character quiet TRUE invisible pwd 并测试该功
  • numpy.histogram 的 hist 维度,密度 = True

    假设我有这个数组 A array 0 0019879 0 00172861 0 00527226 0 00639585 0 00242005 0 00717373 0 00371651 0 00164218 0 00034572 0 008
  • 如何在for循环中引用变量?

    我正在循环访问不同的 data tables 和 data table 中的变量 但我在引用内部变量时遇到问题for loop dt1 lt data table a1 c 1 2 3 a2 c 4 5 2 dt2 lt data tabl
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • 如何从 Fortran 调用 R 函数?

    根据http gallery rcpp org articles r function from c http gallery rcpp org articles r function from c Rcpp 允许用户从 C 调用 R 函数
  • 重复测量引导统计数据,按多个因素分组

    我有一个看起来像这样的数据框 但显然还有更多行等 df lt data frame id c 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 cond c A A B B A A B B A A B B A A B B co
  • R中的一元加/减是什么?

    来自 R 的详细信息部分Syntax http stat ethz ch R manual R patched library base html Syntax html帮助页面 定义了以下一元和二元运算符 他们被列出 在优先级组中 从最高
  • 我无法下载 R 中的 reshape2 包 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试安装 R 包时收到此响应 gt installed packages reshape2 Package LibPath V
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 绘制点之间的所有线

    我有以下 R 代码 x lt c 0 01848598 0 08052353 0 06741172 0 11652034 y lt c 0 4177541 0 4042247 0 3964025 0 4074685 d lt data fr
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 以引用透明的方式从函数的省略号参数中提取符号

    事情又发生了 我正要按下发布答案按钮的问题被删除了 我正在寻找一种方法来从函数的省略号参数中提取绑定到符号的对象的值以及符号 也就是说 我试图以引用透明的方式从省略号中提取符号 我尝试过使用替代品和lazy dots 但没有成功 funct
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这

随机推荐

  • 为 DataContractSerializer 预定义 XML 命名空间

    我正在构建一个自托管的 WCF 服务 我正在构建一个特殊的数据结构 以实现非常灵活的数据传输 到目前为止 我测试了我的结构是否可以使用 DataContractSerializer 进行序列化 这工作得很好 我对此很高兴 但有一些事情让我烦
  • 如何将用户定义的对象插入STL集中?

    我正在尝试将对象 Point2D 插入 Point2D 集合中 但我无法做到这一点 该集合似乎适用于 int 和 char 但不适用于对象 我需要帮助来了解如何将对象插入集合中 假设我想按 x 值的升序对它们进行排序 class Point
  • 在 xamarin.ios 中使用 LaunchScreen.storyboard 添加启动图像

    我正在 Xamarin ios 上工作并使用 Visual Studio 进行开发 我添加了 LaunchScreen Storyboard 来显示启动图像 因为我也想瞄准新的 iPhoneX 设备 我当前面临的问题是 我无法在设备或模拟器
  • 如何禁用几行代码的 GCC 警告

    在 Visual C 中 可以使用 pragma warning disable 我还发现在海湾合作委员会你可以覆盖每个文件编译器标志 我该如何为 下一行 执行此操作 或者使用 GCC 在代码区域周围使用推送 弹出语义 看来这个可以做到 我
  • lambda 内的 lambda

    只是为了好奇 几天前发现了 Lambda 我只是想知道是否可以做类似的事情 尝试过解释 但我的尝试似乎都不起作用 p lambda x lambda x x 2 2 没有明确的目的 我只是没有找到满意的答案 我可能误解了 Lambda 您可
  • 使用 DOM 循环遍历“body”标签的所有元素

    html file get contents test html doc new DOMDocument doc gt loadHTML html xpath new DOMXPath doc body xpath gt query bod
  • 图/网络数据结构的 Java API 列表

    有哪些好的 Java API 可将图形 边 节点 用作数据结构 请在本 wiki 的评论中添加对类似 SO 问题的引用 请直接编辑此 wiki 条目中的列表 请添加您添加的项目的摘要描述作为答案 每个答案一个项目 为了我的硕士论文 我在网上
  • 图表中的微笑

    是否有一种方法或包可以将图 或邻接矩阵 转换为 SMILES 字符串 例如 我知道原子是 6 6 7 6 6 6 6 8 C C N C C C C O 邻接矩阵是 0 1 0 0 0 0 0 0 1 0 2 0 0 0 0 1 0 2 0
  • 我创建的类可以自动装箱吗?

    有什么方法可以对我创建的类使用自动装箱吗 例如 我有这个子类Number public class UnsignedInteger extends Number int n public UnsignedInteger int n if n
  • 在活动之间共享域对象

    我已经在域对象中编写了应用程序逻辑 以启用多个用户界面并移植到其他平台 现在正在考虑为用户界面实现活动 考虑到每个活动都需要序列化其状态 确保我的域对象仅序列化一次的最佳方法是什么 如果您正在谈论序列化对象以在活动之间共享它们 您应该创建自
  • 导入项目出现无法解析目标“android-7”

    这个应用程序是我大约一年前完成的 但从未在市场上发布过 我现在尝试在 Eclipse 中打开它 进行一些小的修改并对代码进行一些处理 所以我导入了它 然后发现了这个奇怪的 无法解析目标 错误 它在我所有的 src 文件中突出显示了每个类的红
  • 为什么我无法使用 Type.InvokeMember 检索 out 或 ref 类型的参数值?

    标题很长 但我希望它具体一些 标题确实是个问题 尽管该方法InvokeMember正在呼叫有一个out参数并正在为该参数分配一个值 但我无法获取该值 这是我最初使用的代码 string parameter int result Conver
  • IE9 中的条件样式表

    IE9 应该支持条件注释 我有正确的 MIME 类型 type text css 所有其他条件样式表都被读入正确的浏览器 这是我无法阅读的内容 它与其他部分一起位于 head 中 但在 IE9 中不会出现在 head 中 对于愚蠢的问题感到
  • 使用 Firebase,Swift removeObserver(withHandle 不会删除观察者

    使用 Swift 3 中的removeObserver withHandle 观察者不会在 viewDidDisappear 上删除 var query FIRDatabaseQuery var postRef FIRDatabaseRef
  • Rails:模型实例方法还是辅助方法?

    按照惯例 以下内容应该定义为我的模型的实例方法还是辅助方法 app models user rb class User lt ActiveRecord Base def full name first name last name end
  • 超媒体与 Servicestack 新 API 链接

    我正在评估如何向 DTO 响应添加超媒体链接 虽然没有标准 但将 List 添加到响应 DTO 似乎是建议的方法 您知道使用ServiceStack框架实现的示例或参考吗 添加列表对我来说没问题 但我的疑问是在哪里放置以下链接的逻辑 在服务
  • WPF:在 TreeViewItem 中正确存储对象

    为了将对象 例如 类的实例 存储在 TreeViewItem 中 我当前将该对象存储在TreeViewItem s Header然后覆盖ToString该类的方法 以便它显示正确的字符串标题 然后我在事件期间将对象投射回来 这是实现这种事情
  • Fortran 中何处放置“隐式无”

    我需要放implicit none在每个函数和子程序中 或者将其放在包含这些函数和子例程的模块的开头就足够了吗 或者将其放在使用这些模块的程序的开头就足够了吗 通过观察别人的工作代码 implicit none包含在所有这些地方 我不确定这
  • React Hooks 的 Keydown/up 事件无法正常工作

    我正在尝试为我正在开发的游戏创建基于箭头的键盘控件 当然 我想跟上 React 的最新动态 所以我想创建一个函数组件并使用钩子 我创建了一个JSFiddle对于我的越野车组件 它几乎按预期工作 除非我同时按下很多箭头键 然后好像有一些key
  • 在 tidyr/dplyr 中添加零计数行的正确习惯用法

    假设我有一些如下所示的计数数据 library tidyr library dplyr X raw lt data frame x as factor c A A A B B B y as factor c i ii ii i i i z