多列的加权平均值,按组(在 data.table 中)

2024-03-12

这个问题紧接着另一个问题组加权平均值 https://stackoverflow.com/questions/14145859/weighted-means-by-group-and-column:我想使用创建加权组内平均值data.table。与最初问题的不同之处在于,要平均的变量名称是在字符串向量中指定的。

数据:

df <- read.table(text= "
          region    state  county  weights y1980  y1990  y2000
             1        1       1       10     100    200     50
             1        1       2        5      50    100    200
             1        1       3      120    1000    500    250
             1        1       4        2      25    100    400
             1        1       4       15     125    150    200
             2        2       1        1      10     50    150
             2        2       2       10      10     10    200
             2        2       2       40      40    100     30
             2        2       3       20     100    100     10
", header=TRUE, na.strings=NA)

使用罗兰在上述问题中的建议答案:

library(data.table)
dt <- as.data.table(df)
dt2 <- dt[,lapply(.SD,weighted.mean,w=weights),by=list(region,state,county)]

我有一个带有字符串的向量来动态确定我想要组内加权平均值的列。

colsToKeep = c("y1980","y1990")

但我不知道如何将它作为 data.table 魔法的参数传递。

I tried

 dt[,lapply(
      as.list(colsToKeep),weighted.mean,w=weights),
      by=list(region,state,county)]` 

但我然后得到:

Error in x * w : non-numeric argument to binary operator

不知道如何实现我想要的。

额外问题:我希望保留原始列名称,而不是获取 V1 和 V2。

注意我使用 data.table 包的 1.9.3 版本。


通常,您应该能够执行以下操作:

dt2 <- dt[,lapply(.SD,weighted.mean,w=weights), 
          by = list(region,state,county), .SDcols = colsToKeep]

即,只需将这些列提供给.SDcols。但目前,这行不通由于错误 https://github.com/Rdatatable/data.table/issues/495, 在那里面weights列将不可用,因为它未在中指定.SDcols.

在修复之前,我们可以按如下方式完成此操作:

dt2 <- dt[, lapply(mget(colsToKeep), weighted.mean, w = weights), 
            by = list(region, state, county)]
#    region state county     y1980    y1990
# 1:      1     1      1  100.0000 200.0000
# 2:      1     1      2   50.0000 100.0000
# 3:      1     1      3 1000.0000 500.0000
# 4:      1     1      4  113.2353 144.1176
# 5:      2     2      1   10.0000  50.0000
# 6:      2     2      2   34.0000  82.0000
# 7:      2     2      3  100.0000 100.0000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多列的加权平均值,按组(在 data.table 中) 的相关文章

随机推荐

  • 使用 loadData 在 UIWebView 中显示 PDF

    我正在尝试显示本地存储在 UIWebView 中的 PDF 这就是我目前尝试执行此操作的方式 if NSFileManager defaultManager fileExistsAtPath self url LOG ERROR Could
  • 如何返回 JsonResult [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在编写这个 AJAX 方法时遇到问题 我想返回一个JsonResult 似乎是合乎逻辑的事情 我能找到的所有例子都可以使用Jso
  • 在Python中访问第n维[重复]

    这个问题在这里已经有答案了 我想要轻松读取多维 numpy 数组的某些部分 对于任何数组 访问第一维都很容易 b index 另一方面 访问第六维度是 困难的 尤其是阅读 b index the next person to read th
  • 角度 HTTP POST 请求

    我在 Angular2 和 Spring MVC 中构建一个应用程序 当我尝试向我的服务器发出 POST 请求时 我没有收到任何成功或失败的迹象 但请求没有发生 因为我看不到新的数据 当我从邮递员那里发出请求时 请求成功 我可以看到新数据
  • 什么时候应该使用 MySQLi 而不是 MySQL?

    有人可以帮我解释一下使用 MySQLi 而不是 MySQL 的优点和缺点吗 是否存在不应该使用 MySQLi 的情况 为了使用 MySQLi 我是否需要以不同的方式配置我的服务器 例如 我是否需要升级 Apache 或 PHP 才能支持 M
  • 如何创建带有百分比计数器的 jQuery 预加载器?

    我编写了从一本 jQuery 初学者书中学到的代码 它非常适合作为页面的预加载器 但我如何为其创建百分比 计数器呢 基于加载了多少正文内容 目前我只有一个动画 GIF 但我想要一些更高级的东西 Lets preload window loa
  • 使用转换器和提供程序而不是属性映射时如何让 ModelMapper.validate() 成功?

    有类似的东西 Getter Setter public static class Entity private int hash private LocalDateTime createdTime and Getter Setter pub
  • 调用 oncontextmenu 时 Firefox 浏览器的事件未定义

    我在右键单击页面中的按钮时显示上下文菜单 用于显示上下文菜单的代码是 window addEventListener contextmenu function e e preventDefault false 当我右键单击按钮时 调用的上下
  • 解决 git merge octopus 上的冲突

    章鱼合并是指合并2个以上的头 用户应该如何使用普通的三向合并工具比较文件 3 个文件被传递到合并工具 BASE LOCAL REMOTE 3 个头需要多少个以及什么组合 在这种情况下 您不应该使用章鱼合并 八达通合并仅应在不存在合并冲突或冲
  • setInterval 使用 Electron 一小时后停止

    希望有人能在这里指出我正确的方向 我的电子应用程序需要每 10 分钟左右执行一次 API 调用 目前 我在渲染器进程中使用 setInterval 循环来执行此操作 该循环每 10 分钟触发一次 它通常工作得很好 几个小时后似乎就停止了 我
  • Android Studio 在创建新活动时“发生 IDE 错误”

    更新见底部 由于 Android Studio 将自身更新到 v3 0 我无法创建新的 Activity 我收到此错误报告对话框 显示 2 个错误 我尝试了不同的项目 尝试清理项目 重新同步 gradle 重新启动计算机 卸载 重新安装 A
  • strdup():对警告感到困惑(“隐式声明”、“使指针...无需强制转换”、内存泄漏)

    当我编译下面的一小段代码 其中我们定义一个字符串 然后使用 strdup 来制作副本 时 我收到 3 个警告 来自 GCC 的 2 个编译器警告和来自 valgrind 的 1 个运行时警告 错误 我怀疑内存泄漏错误 由 valgrind
  • x86-SSE 中四个压缩单精度浮点到无符号双字的转换

    有没有办法将四个打包单精度浮点值转换为具有 SSE 扩展的 x86 中的四个双字 最接近的指令是CVTPS2PI 但它不能在两个 xmm 寄存器上执行 而是应该给出为CVTPS2PI MM XMM M64 如果我想要类似的东西怎么办
  • R metaMDS 排序距离

    我一直在对不同采样点的丰富物种数据集进行一些排序 我在用metaMDS 素食主义者可以做到这一点 通过此功能 您可以 直接输入群落数据 行中的站点和列中的物种 并指定您希望使用的距离类型 即 jaccard brays curtis euc
  • Linux 上的 OpenCL,集成英特尔图形芯片

    我想用OpenCL在 Debian 8 上 我读到在本页 http streamcomputing eu blog 2011 12 29 opencl hardware support Linux 上不支持 Intel 的 GPU 这篇文章
  • XCode 4.5 警告父/子类的类别之间的方法名称冲突

    我正在开发一个最初使用 XCode 4 0 构建的项目 然后迁移到使用 XCode 4 2 现在我已经测试了迁移到 XCode 4 5 并且收到了大量如下警告 instance method values in category from
  • 如何将模型数据对象数组转换为dataProvider

    假设我有模型User与其自身有多对多的关系 命名为friends so user gt friends or model gt friends在视图中 给了我一个数组User对象 我想将朋友显示为网格视图 但CGridView数据为data
  • 在二维动画上绘制可变大小和位置的圆圈

    我正在 Python 3 3 中使用 matplotlib 我有一个动画 2d 和 3d 窗口 我在上面画点 这些点代表物体 但不确定它们是否真的存在 所以我想围绕这些点画一个圆圈来显示不确定性 这种不确定性是变化的 所以底线是 我想在 2
  • JavaScript 中可以编写连续的嵌套函数吗?

    我知道这就是封闭的领域 但是可以连续调用嵌套的匿名函数吗 假设我有这个 function testing input var testing 0 function testing testing 1 return testing 我们可以有
  • 多列的加权平均值,按组(在 data.table 中)

    这个问题紧接着另一个问题组加权平均值 https stackoverflow com questions 14145859 weighted means by group and column 我想使用创建加权组内平均值data table