r 沿着向量搜索并计算平均值

2024-04-08

我的数据看起来像:

require(data.table)
DT <- data.table(x=c(19,19,19,21,21,19,19,22,22,22),
             y=c(53,54,55,32,44,45,49,56,57,58))

我想沿着 x 搜索,并计算 y 的平均值。 不过,在使用的时候。

DT[, .(my=mean(y)), by=.(x)]

我得到了 x 重合值的总体平均值。 我想沿着 x 搜索,每次 x 变化时,我想计算一个新的平均值。对于提供的示例,输出将是:

DTans <- data.table(x=c(19,21,19,22),
             my=c(54,38,47,57))

我们可以使用rleid要创建另一个分组变量,请获取mean'y',并将 'indx' 指定为 NULL

library(data.table) # v 1.9.5+
DT[, .(my = mean(y)), by = .(indx = rleid(x), x)][, indx := NULL]
#    x my
#1: 19 54
#2: 21 38
#3: 19 47
#4: 22 57

基准测试

set.seed(24)
foo <- function(x) sample(x, 1e7L, replace = TRUE)
DT  <- data.table(x = foo(100L), y = foo(10000L))

josilber <- function() {
    new.group <- c(1, diff(DT$x) != 0)
    res <- data.table(x = DT$x[new.group == 1], 
              my = tapply(DT$y, cumsum(new.group), mean))
}

Roland <- function() {
    DT[, .(my = mean(y), x = x[1]), by = cumsum(c(1, diff(x) != 0))]
}

akrun <- function() { 
    DT[, .(my = mean(y)), by = .(indx = rleid(x), x)][,indx := NULL]
}

bgoldst <- function() {
    with(rle(DT$x), data.frame(x = values, 
       my = tapply(DT$y, rep(1:length(lengths), lengths), mean)))
}

system.time(josilber())
#   user  system elapsed 
#159.405   1.759 161.110 

system.time(bgoldst())
#   user  system elapsed 
#162.628   0.782 163.380 

system.time(Roland())
#   user  system elapsed 
# 18.633   0.052  18.678 

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

r 沿着向量搜索并计算平均值 的相关文章

  • 获取因子变量中水平和标签之间的原始关联

    我正在寻找一个函数来获取因子变量的原始映射表 我导入一个 Rdata 文件 我有一个名为 FactVar 的因子变量 我知道 FactVar 的映射表如下 010025 gt city1 015146 gt city2 048017 gt
  • 在 R 中的轴标签中绘制表情符号/自定义图像

    我正在尝试在 R 中绘制表情符号和自定义图像作为 X 轴的标签 我读过类似的帖子并且问题 https stackoverflow com questions 47730589 plot emojis emoticons in r with
  • 提取字符串中最后一个句点后的文本[重复]

    这个问题在这里已经有答案了 我意识到这个问题对于大多数正则表达式大师来说可能看起来非常简单 但是回顾类似的问题并没有得出解决方案 我有一个电子邮件地址向量 称为email并希望在每个最后一个句点之后提取文本 举例来说 email lt c
  • 使用 KnitR 在 R 中以编程方式创建 Markdown 表

    我刚刚开始了解 KnitR 以及使用 Markdown 生成 R 文档和报告 这对于我与工作有关的许多日常报告来说似乎是完美的 然而 我没有看到的一件事是使用 Markdown 格式打印数据框和表格的简单方法 有点像xtable 但使用 M
  • 如何将零件逐一添加到闪亮的图表中

    我正在尝试为我的统计课程制作一些演示 除此之外 我想展示所涉及的逐步过程 对于我正在寻找的简化示例 请考虑以下小玩具 R 函数 toyPlot lt function x lt 1 100 100 y lt x rnorm 100 0 0
  • dplyr 中的 if_all 和 if_any 函数未运行

    我正在尝试使用以下方法复制这些示例if all and if any功能但不工作 Erro Problem with filter input 1 x n o foi poss vel encontrar a fun o if all i
  • 拆分数字 yyyymmdd 列

    我有一个包含 DATE 列的数据框 我将其引用为 NM DATA DATE 它是一个 yyyymmdd 形式的数字 我知道 有一百个线程 我尝试了所有能找到的解决方案 但它们对我不起作用 即将重新加载 RStudio NM DATA DAT
  • 将模拟泊松分布添加到 ggplot

    我做了泊松回归 然后可视化模型 library ggplot2 year lt 1990 2010 count lt c 29 8 13 3 20 14 18 15 10 19 17 18 24 47 52 24 25 24 31 56 4
  • 如何从数据框列表中提取某些列

    我有一个数据框列表 l 这些数据框本身就是二维矩阵 对于我的工作 我需要创建另一个列表 其中的数据帧是原始列表中数据帧的子集 例如 列表l1有两个数据帧D1和D2 分别有10和12个不同的数据列 现在我想创建一个新列表 l2 它也有两个数据
  • 使用 R 和 rvest 进行网页抓取

    我正在尝试rvest学习使用 R 进行网页抓取 我正在尝试为页面的其他几个部分复制乐高示例并使用selector gadget to id 我从中提取了示例R Studio 教程 http blog rstudio org 2014 11
  • 从 Rcpp C++ 函数获取 r 函数参数

    我在 R 端定义了一个函数 如下所示 foo lt function arg1 arg2 arg3 以及使用 Rcpp 的 C 函数 该函数获取全局环境并实例化 R 函数以从该函数执行它 这是代码 namespace Rcpp void m
  • ggplot2:从纵横比中排除图例

    I use ggplot2 and knitr发布带有右侧图例的散点图 图例包含在纵横比中 因此破坏了绘图的 方形 如图所示默认主题 https github com hadley ggplot2 wiki themes 当图例文本变得比
  • 删除 ggplot 地图/choropleth 中的边框线

    我想删除 ggplot 中生成的等值线区域之间的线 我的问题是由一张非常大的地图引起的 其中包含非常非常小的区域 人口普查区块组 这些区域数量如此之多 以至于鉴于边界的密度 不可能看到填充形状的颜色 我在 Mac 上使用更新后的 RStud
  • 如何为每个分组元素选择随机的非连续日期?

    我目前正在尝试为每个分组列选择非连续日期 换句话说 我有以下数据框 我基本上想group by Site 然后为每个分组站点仅保留 3 个随机非连续日期 例如 如果 HP37P1B 的日期对应于 3 月 12 日 3 月 13 日 3 月
  • 将第一行粘贴到列表中的列名称

    我有 68 个数据文件 全部具有相同的标识符 但具有不同的指示符 我将这些单独的文件转换为一个列表 其中每个数据框作为一个单独的元素 每个数据框的第一行是年份 我想将其粘贴到列名称中 我希望能够用 分隔它 例如 现在列名称为 Arbeits
  • 使用R中的XLSX包在Excel中打印data.frame时出错

    数据框是可见的 没有任何错误 但是 当使用 XLSX 包的 write xlsx 函数打印相同内容时 会出现错误 Error in jcall cell V setCellValue value method setCellValue wi
  • 确定执行脚本的路径

    我有一个名为foo R其中包括另一个脚本other R 位于同一目录中 usr bin env Rscript message Hello source other R 但我想要R找到那个other R无论当前工作目录是什么 换句话说 fo
  • 在 Apache 服务器上运行 R Shiny 应用程序

    我有一个闪亮的应用程序 我想在现有的 Apache 服务器上运行 我对服务器完全陌生 不太知道从哪里开始 不幸的是 我在网上找到的大多数资源都是关于 NGINX 而不是 Apache 我知道这样的事情是可能的 但我不知道如何开始 如何开始在
  • 关于使用outer()和用户定义函数的简单问题?

    gt fun1 lt function x y x y gt outer seq 1 5 length 5 seq 6 10 length 5 fun1 1 2 3 4 5 1 7 8 9 10 11 2 8 9 10 11 12 3 9
  • ANEW 字典可以用于 Quanteda 中的情感分析吗?

    我正在尝试找到一种方法来实施英语单词情感规范 荷兰语 以便使用 Quanteda 进行纵向情感分析 我最终想要的是每年的 平均情绪 以显示任何纵向趋势 在数据集中 所有单词均由 64 名编码员按照 7 分李克特量表在四个类别上进行评分 这提

随机推荐

  • 如何将非连续数字添加到范围中?

    我试图迭代范围 750 765 并添加非连续数字 769 770 774 如果我尝试在范围函数之后添加数字 它会返回范围列表 然后是各个数字 gt gt gt for x in range 750 765 769 770 774 print
  • 样式表被汉字接管/替换

    好吧 有些事情变得疯狂了 除非中国从我的 iepage 上的测试 style css 文件开始接管 好吧 我猜他们一开始就讨厌 IE 但无论如何 它加载时没有样式表 悲伤 我进入 Web 检查器 看到所有链接的文件都充满了 可能 中文字符
  • 无法初始化私有常量成员[重复]

    这个问题在这里已经有答案了 我想要一个int与我的类相关联 该类在该类的用户实例化它时设置 class MyClass public MyClass int x private const int x 为了不断初始化它 我尝试使用构造函数
  • 无法运行 XAMPP - MySql

    当我尝试启动 XAMPP MySql 时 它不起作用 我已经尝试修复它 但我找不到任何实际的解决方案 我希望你能找到问题所在 有日志 2019 06 26 9 08 35 0 Note InnoDB Mutexes and rw locks
  • 为了速度/性能什么时候应该、不应该脱离 OOP?

    在 Android 开发者文章中 Google 指出 您通常应该声明公共变量 而不是带有 getter 和 setter 的私有变量 以增强嵌入式设备的性能 我认为函数调用比仅仅写入地址更昂贵 我想知道 应该在多大程度上牺牲性能来坚持 OO
  • 如何在列表框中设置对齐格式

    我将值添加到列表框 for int i 0 i lt 2 i lbBeamValue Items Add Beam i ToString value1 i Angle i ToString value2 i 显示如下 Beam 0 0 12
  • 仅保留 JavaScript 对象中的某些属性

    我有一个对象 我想通过删除除某些特定属性之外的所有属性来修改对象 而不是克隆它 例如 如果我从这个对象开始 var myObj p1 123 p2 321 p3 p3 1 1231 p3 2 342 p4 23423 p99 p99 1 s
  • 截断分页中的页数

    这可能是一个非常愚蠢的问题 但我想不出任何可以帮助我走得更远的东西 我希望缩短页面导航中的数字数量 而不是像 1 2 3 4 5 6 7 8 我希望它像 1 2 7 8 当我去2 数字3现在应该可以在数字组中看到 这是我负责页码的代码 di
  • MySQL 最大用户连接数与最大连接数

    可悲的是 我在任何地方都找不到对此查询的任何直接解释 甚至在 MySQL 文档中也找不到 各个论坛上的一些人说 max user connections 永远不能大于 max connections 例如 如果一个用户有3 max user
  • mutableStateOf 和 mutableStateListOf 有什么区别?

    在与一个ViewModel and a List存储在那里 我通常遵循这种方法 var characteristics by mutableStateOf listOf
  • Emacs、Vim 和 JEdit 中哪些编辑器支持同时多个文本插入点?

    背景 JEdi t 以及其他一些文本编辑器 支持称为多个同时文本插入点 http groups csail mit edu uid projects simuledit usenix01 html 至少我在这里这么称呼它 要了解这意味着什么
  • 使用 STM32 USB 设备库将闪存作为大容量存储设备

    我的板上有这个闪存IC 它连接到我的STM32F04 ARM处理器 处理器的USB端口可供用户使用 我希望我的闪存在通过 USB 连接到 PC 时被检测为存储设备 作为第一步 我在程序中将 USB 类定义为 MSC 效果很好 因为当我将主板
  • Laravel 5 - Php artisan 语法错误

    我目前正在使用 Laravel 5 开发一个应用程序 突然工匠停止工作了 我无法对其使用单个命令 它总是返回错误 Symfony Component Debug Exception FatalErrorException syntax er
  • 什么时候值得使用数据库?

    我有一个与数据库有关的问题 以及什么时候值得深入研究 我主要是一名嵌入式工程师 但我正在使用 Qt 编写一个应用程序来与我们的控制器交互 我们正处于一个奇怪的境地 我们有足够的数据 可以实现一个数据库 大约 700 多个项目并且还在不断增长
  • EF4 审核多对多关系的更改

    我正在将审核添加到我的 EF4 模型优先 应用程序中 我可以获得有关发生更改的实体的结构属性的详细信息 我还可以看到多对多关系何时发生变化 我可以看到所涉及类型的名称以及发生的情况 添加或删除 但我真正想要的是关系更改中涉及的实体的 ID
  • 使用 scala 时 lambda 的 AWS 凭证不起作用

    尝试使用通过 DefaultCredentialProvider 提供的凭证时 AWS lambda 函数不起作用 我需要将凭据传递给 S3 才能运行 Code def initializeAwsCredentials AWSCredent
  • iOS Firebase - 如何从不同节点中删除具有相同密钥的子节点

    我有一个名为 以下 的裁判 在该引用下 有 2 个不同的 userId 关注同一用户 如果他们都关注的用户想要删除他们的帐户 我想从关注节点中删除他们 多位置更新似乎不正确地实现此目的 如何做呢 用户 kk8qFOIw 是正在删除其帐户的用
  • 如何追加到 R 中的现有文件而不覆盖它?

    我想写入一个文件 然后在循环中多次追加它 在 Windows 机器上 每次追加后 我想关闭连接 因为我希望该文件存入保管箱帐户 以便我可以在代码运行时在其他计算机上打开它 以检查日志文件的状态 注意 这个条件使得这个问题不同于SO上关于si
  • Dagger 2 构建 IllegalArgumentExceptioncompileDebugJavaWithJavac

    我一直在测试 Dagger 2 一切都正常 直到我做了一些重构 现在 gradle 正在抛出一个IllegalArgumentException 而且我无法弄清楚我所做的更改现在导致了错误 我没有对 gradle 文件进行任何更改 这似乎是
  • r 沿着向量搜索并计算平均值

    我的数据看起来像 require data table DT lt data table x c 19 19 19 21 21 19 19 22 22 22 y c 53 54 55 32 44 45 49 56 57 58 我想沿着 x