在 R 中的 data.table 中执行 := by group 时如何更改目标列的类型?

2024-01-13

我正在尝试对“整数”类型的现有列执行 := by group 操作,其中新值的类型为“double”,但失败了。

我的场景是根据其他列中的值将表示时间的列转变为 POSIXct。我可以修改 data.table 的创建作为解决方法,但我仍然对如何实际更改列的类型感兴趣,正如错误消息中所建议的那样。

这是我的问题的一个简单的玩具示例:

db = data.table(id=rep(1:2, each=5), x=1:10, y=runif(10))
db
id  x          y
 1:  1  1 0.47154470
 2:  1  2 0.03325867
 3:  1  3 0.56784494
 4:  1  4 0.47936031
 5:  1  5 0.96318208
 6:  2  6 0.83257416
 7:  2  7 0.10659533
 8:  2  8 0.23103810
 9:  2  9 0.02900567
10:  2 10 0.38346531

db[, x:=mean(y), by=id]   

Error in `[.data.table`(db, , `:=`(x, mean(y)), by = id) : 
Type of RHS ('double') must match LHS ('integer'). To check and coerce would impact performance too much for the fastest cases. Either change the type of the target column, or coerce the RHS of := yourself (e.g. by using 1L instead of 1)

我们可以在将“mean(y)”分配给“x”之前将“x”列的类别转换为“数字”,因为“x”的类别是“整数”。如果我们将 'x' 替换为mean任何其他数值变量(包括“x”)。

db[, x:= as.numeric(x)][, x:= mean(y), by=id][]

或者分配到一个新列,然后更改列名称

setnames(db[, x1:= mean(y),by=id][,x:=NULL],'x1', 'x')

或者我们可以将“x”分配给“NULL”,然后创建“x”作为mean'y'(@David Arenburg 的建议)

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

在 R 中的 data.table 中执行 := by group 时如何更改目标列的类型? 的相关文章

随机推荐

  • 如何使用 keycloak 和 spring 读取所有用户?

    我在用着keycloak 3 4 and spring boot开发一个网络应用程序 我使用 Active Directory 作为用户联合来检索所有用户信息 但要在我的网络应用程序中使用这些信息 我想我必须将它们保存在 local web
  • 多级页表——分层分页

    过去操作系统期末考试的示例问题 我如何计算此类问题 计算机有 64 位虚拟地址空间和 2048 字节页面 一个页表项占用 4 个字节 使用多级页表是因为每个表必须包含在一个页内 需要多少级 我该如何计算这个 由于页表必须适合一个页面 因此页
  • 更改分割线突出显示/调整线条大小

    我注意到 当我在 Visual Studio 中调整元素大小时 分割线会被涂成纯透明的黑色 如下所示 然而 在我自己的 Winforms 应用程序中 我得到了以下调整大小行 我想知道如何改变这条调整线的绘画 如果你看一下分离器源代码 htt
  • Firebase 身份验证 FirebaseNetworkException:发生网络错误(例如超时、连接中断或无法访问主机)

    我正在为我的 Android 应用程序创建身份验证工作流程 我允许用户使用用户名 密码和各种 OAuth 提供商登录 我正在验证电子邮件和密码 以便我知道传递给 Firebase 的信息是有效的 我在用着com google firebas
  • 获取 boto.cfg 中的 Python 凭据文件

    我是第一次使用 AWS 刚刚安装了 python 的 boto 我陷入了它建议的步骤 您可以将此文件放置在 etc boto cfg 中供系统范围使用 也可以放置在执行命令的用户的主目录中 boto 老实说 我不知道该怎么办 首先 我找不到
  • 使用 newID() 创建函数

    我不断收到此错误 有什么想法吗 在函数内的 newid 中无效使用副作用或时间相关运算符 我正在与MS SQL Server 2005 这里是T SQL陈述 Create Function dbo GetNewNumber RETURNS
  • 触发多事件

    我可以在trigger 中触发多个事件或在JQuery 中链接它们吗 例如 element trigger event1 event2 event3 or element trigger event1 trigger event2 or e
  • =~ 在 Perl 中做什么?

    我猜标签是一个变量 它正在检查9eaf 但这在 Perl 中存在吗 这里的 符号是做什么的 前后的 字符是什么9eaf doing if tag 9eaf Do something 是测试正则表达式匹配的运算符 表达方式 9eaf 是一个正
  • 什么都没有,WithEvents 字段和内存泄漏

    是否需要设置为Nothing 在 Dispose 中 所有WithEvents fields 显然Handles关键字将处理程序添加到此类字段 但不会将其删除 直到该字段不再存在为止 Nothing 这会产生内存泄漏 这对于像这样的情况应该
  • fork() 后处理子进程中 std::thread 终止的正确方法

    你想皱多少皱眉就皱多少 无论如何我都会这么做 我的问题是 在下面的代码中 处理终止的正确方法是什么std thread在生成的子进程中fork std thread detach or std thread join include
  • 如何在 Rails 1.2.3 中使复选框默认为“选中”?

    如何使复选框在最初显示时默认为 选中 我还没有找到一种 Rails 方法来做到这一点 有效 所以我用 JavaScript 做到了 Rails 有没有正确的方法来做到这一点 我正在使用 Rails 1 2 3 导轨 3 x form for
  • 在 Android 上刷新地图活动中的覆盖对象

    我必须构建一个地图活动 最重要的是 我需要显示一些位置点 这些位置是从另一个类的哈希表中检索的 该哈希表的内容始终会发生变化 因此 我希望看到地图活动上的这些位置点随着哈希表的修改而移动 代码如下所示 Override public voi
  • 动态数据表到实体*无需*提前进行硬编码...?

    问题 问 为什么不能 如何动态使用 DataTable 中的数据在使用反射 的函数中创建 LINQ EF 以根据可用内容创建实体实例 我看到了很多很多的问题和关于硬编码 但没有人这样做动态地 我正在寻找一种替代方法 不必为我的所有实体维护硬
  • Angular 2+:IE11 严格模式下不允许对属性进行多重定义

    我安装了 pollyfills 但在 main bundle js 中的 Internet Explorer 11 中收到此错误 它位于第 9692 行 但是查看编译后的代码 我无法理解它 这里是 styles nng select cus
  • 计算每个组的 data.table 窗口中的值数量

    我正在尝试添加新列data table 其中行中的值取决于行中值的相对关系 更准确地说 如果一行中有一个值 X 我想知道同一列 和组 中有多少个其他值在 X 30 范围内 也就是说 考虑到 DT lt data table X c 1 2
  • 在 PyQt 中播放声音文件

    我在 PyQt 中开发了一个播放声音的软件 我使用 Phonon Library 来播放声音 但它有一些滞后 那么如何在不使用 Phonon Library 的情况下在 PyQt 中播放声音文件 这就是我目前使用 Phonon 的方式 de
  • 尝试使用 Powershell 从 csv 导入信息,但不幸的是某些结果出现错误

    AuditSuccess Import Csv Path G LabLog csv Where Object Keywords like Audit Success Measure Object Select Object count Au
  • Node.js 和使用 Q 进行异步编程

    以下是正确的处理方式吗 这是一个注册控制器操作 我正在创建一个用户和一个组以将用户添加到其中 请注意 我有称为用户和组的方法级别变量 其余代码使用 Q 模块进行异步 是否可以使用方法级别变量 或者它们会被同时注册的其他人覆盖吗 export
  • setup.py 不遵守 PIP_INDEX_URL

    我正在运行本地pypi服务器 https pypi python org pypi pypiserver 我可以通过使用以下命令指定它来从该服务器安装软件包 i的选项pip命令或通过设置PIP INDEX URL环境变量 当我安装具有先决条
  • 在 R 中的 data.table 中执行 := by group 时如何更改目标列的类型?

    我正在尝试对 整数 类型的现有列执行 by group 操作 其中新值的类型为 double 但失败了 我的场景是根据其他列中的值将表示时间的列转变为 POSIXct 我可以修改 data table 的创建作为解决方法 但我仍然对如何实际