从 R 中的向量创建频率计数[重复]

2023-12-22

假设有一个向量,其数值可能有重复值

x <- c(1, 2, 3, 4, 5, 1, 2, 2, 3)

我想创建另一个计数向量,如下所示。

  1. 它的长度与x.
  2. 对于每个唯一值x,第一次出现为1,第二次出现为2,以此类推。

我想要的新向量是

1, 1, 1, 1, 1, 2, 2, 3, 2

我需要一种快速的方法来做到这一点,因为x可以很长。


Use ave and seq_along:

> x <- c(1, 2, 3, 4, 5, 1, 2, 2, 3)
> ave(x, x, FUN = seq_along)
[1] 1 1 1 1 1 2 2 3 2

另一个需要考虑的选择是data.table。尽管这需要更多的工作,但它可能会在很长的向量上得到回报。

这是你的例子——绝对看起来有点矫枉过正!

library(data.table)

x <- c(1, 2, 3, 4, 5, 1, 2, 2, 3)
DT <- data.table(id = sequence(length(x)), x, key = "id")
DT[, y := sequence(.N), by = x][, y]
# [1] 1 1 1 1 1 2 2 3 2

但是对于 10,000,000 个项目长的向量怎么样?

set.seed(1)
x2 <- sample(100, 1e7, replace = TRUE)

funAve <- function() {
  ave(x2, x2, FUN = seq_along)
}

funDT <- function() {
  DT <- data.table(id = sequence(length(x2)), x2, key = "id")
  DT[, y := sequence(.N), by = x2][, y]
}

identical(funAve(), funDT())
# [1] TRUE

library(microbenchmark)
# Unit: seconds
#      expr      min       lq   median       uq      max neval
#  funAve() 6.727557 6.792743 6.827117 6.992609 7.352666    20
#   funDT() 1.967795 2.029697 2.053886 2.070462 2.123531    20
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 R 中的向量创建频率计数[重复] 的相关文章

  • 使用 data.table 对分组数据进行插值

    这是我最初发布的问题的延续http r 789695 n4 nabble com subset Between data table list and single data table object tp4673202 html http
  • R 和系统调用

    我过去曾使用 R 对命令行进行非常基本的调用 例子可以找到here https stackoverflow com questions 3284301 command line in r code 这一次 我希望模仿这段从 Windows
  • ggplot 中的条形图,每组有不同数量的条形图

    我的数据集如下所示 DSET lt data frame cbind c rep V1 3 rep V2 3 V3 c rep c X1 X2 X3 2 X1 c rep 1 7 names DSET lt c A B C DSET 3 l
  • 如何根据另一列的条件语句将因子列添加到数据框?

    我有一个数据框 我需要根据条件语句添加一个因子列 这里是data https www dropbox com s hujiacus8ek5o5z MoroccoCGE CC Stats csv Code morstats agri f lt
  • 在 R data.table 中计算时间增量

    我有一个篮球运动员数据的数据表 其中包括每场比赛和多名球员的比赛日期 我想创建一个列来计算自上一场比赛以来的天数 我在 R 中使用 data table 包 PLAYERID GAME DATE 1 2989 2014 01 1 2 298
  • 尝试使用 movie3d 制作 3D PCA 图(rgl)的电影

    我已经使用 pca3d 包在 R 中制作了 rgl 3D PCA 图 并且我正在尝试使用 movie3d 制作一个包含旋转图电影的 gif 文件 pca3d 包 makeMoviePCA 中有一个函数 它将其参数传递给 movie3d 这是
  • data.table 相当于 dplyr::filter_at

    考虑数据 library data table library magrittr vec1 lt c Iron Copper vec2 lt c Defective Passed Error set seed 123 a1 lt sampl
  • 对 data.table 进行子集化的最快方法是什么?

    在我看来 这是执行行 列子集的最快方法data table是使用 join 和nomatch option 它是否正确 DT data table rep 1 100 100000 rep 1 10 1000000 setkey DT V1
  • 计算网格中物种的出现次数

    我有大约500 000点R美国各地候鸟物种的出现数据 我试图在这些点上覆盖网格 然后计算每个网格中出现的次数 统计完计数后 我想将它们引用到网格单元 ID 在 R 中 我使用了over 函数只获取范围图中的点 这是一个形状文件 Read i
  • 连接路径的函数?

    是否有现有的函数来连接路径 我知道实施起来并不困难 但仍然 除了照顾尾随 or 我需要注意正确的操作系统路径格式检测 即我们是否编写C dir file or dir file 正如我所说 我相信我知道如何实施它 问题是 我应该这样做吗 现
  • 如何通过在R闪亮循环中读取.csv文件来动态生成dataTableOutput?

    我有一个函数可以生成 n 个数据帧并将其作为 csv 文件保存在某个位置 并且该函数返回已保存 CSV 的文件名 我希望获取这些 csv 文件 使用以下命令读取它read csv 然后使用 renderUI 和 renderDataTabl
  • 如果 RCurl::getURL() 执行时间太长,如何停止执行?

    有没有办法告诉 R 或 RCurl 包在超过指定时间段时放弃尝试下载网页并转到下一行代码 例如 gt library RCurl gt u http photos prnewswire com prnh 20110713 NY34814 b
  • 数据框中按行相关

    我正在尝试计算大型数据帧的所有行之间的相关性 到目前为止已经提出了一个有效的简单 for 循环 例如 name lt c a b c d col1 lt c 43 78 43 84 37 92 31 72 col2 lt c 43 80 4
  • R 监督潜在狄利克雷分配包

    我在用着这个LDA包 https cran r project org web packages lda 对于 R 具体来说 我正在尝试做监督潜在狄利克雷分配 slda https www cs princeton edu blei pap
  • 将一长行带空格的数据导入R中

    这个问题是我上一个问题的后续问题 将一长行数据导入到 R 中 https stackoverflow com questions 8389913 我有一个由单行文本组成的大型数据文件 格式类似于 Cat 14 15 Horse 16 我最终
  • 省略 RColorBrewer 调色板上较亮的颜色以在 ggplot2 中使用

    我想在 RColorBrewer 的 Oranges 调色板中使用较深的颜色 以便在我的 ggplot 条形图 中使用 然而我却做不到 帮助 下面是示例代码 my palette brewer pal n 9 Oranges 4 9 Bar
  • 缩放geom_密度以将geom_bar与y上的百分比相匹配

    因为我对数学感到困惑上次我尝试问这个问题 https stackoverflow com questions 32412805 ggplot2 histogram with density curve that sums to 1 这是另一
  • 如何在复杂的皂膜GAM中设置更平滑的边界条件?

    我正在对南太平洋岛屿泻湖中宽吻海豚的分布进行建模 我想使用肥皂膜平滑器来模拟海豚在二维表面 经度 x 纬度 上存在的概率 考虑到陆地边界 显然海豚不能在陆地上行走 我想知道如何将我的研究区域 陆地和近海水域 的边界固定为等于零的条件 因为我
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • 使用 alpha 通道叠加两个 ggplot2 stat_密度2d 图

    我想叠加两个ggplot2使用 alpha 通道进行绘图 结果图像显示两个数据集 这是我的测试数据 data read table text P1 1 0 4 nP2 0 0 2 nP3 2 1 8 nP4 2 2 6 nP5 0 5 2

随机推荐

  • 如何在面板中的另一个 WPF 窗口内加载 WPF (xaml) 窗口?

    这可能吗 我使用了 Frame 控件并且 显示 例如 showwindow xaml 但我收到这个错误 根元素对于导航无效 确保您可以使用以下方式导航 显示 窗口 YourFrame Navigate YourWindow 然而 我不太喜欢
  • 如何使用张量板制作散点图-tensorflow

    现在 我正在研究张量流 但是 我无法使用张量板绘制点图 如果我有训练样本数据 就像那样 train X numpy asarray 3 3 4 4 5 5 6 71 6 93 4 168 9 779 train Y numpy asarra
  • jQuery - 如何按属性名称开头选择值

    我想通过给出属性名称 仅开头 来选择属性值 例如 如果我们有 html 标签 div class slide div 我想从属性中选择以以下开头的值data 先谢谢您的帮助 如果您想要所有 data 属性 您可以迭代 jq 数据对象 sli
  • 如何使用图像作为提交按钮?

    有人可以帮助更改此设置以合并名为的图像BUTTON1 JPG而不是标准submit button
  • python中编译的正则表达式对象的类型

    python中编译后的正则表达式是什么类型 我特别想评价一下 isinstance re compile 是真实的 出于内省的目的 我的一个解决方案是 有一些全局常量REGEX TYPE type re compile 但看起来不太优雅 E
  • 使用 int 与 Integer

    我遇到一个类 它使用整数变量来捕获要在 for 循环中使用的大小 这是好的做法还是我们应该使用 int 原始数据类型 Integer size something getFields size for Integer j 0 j lt si
  • 将自定义对象的数据绑定到MvvmCross中的TextView

    I have one custom object in my ViewModel I want to bind only one of its member to textview in my droid view 我只想将该对象的字符串成
  • jQuery 显示一个 Div 并隐藏其他 Div

    http jsfiddle net yrM3H 2 http jsfiddle net yrM3H 2 我有以下代码 jQuery document ready function jQuery toggle next hidden hide
  • 检查变量是否已设置然后回显而不重复?

    是否有一种简洁的方法来检查变量是否已设置 然后回显它而不重复相同的变量名称 而不是这个 我正在考虑这个 C 风格伪代码中的一些内容 PHP has sprintf http www php net manual en function sp
  • 如何更改@NotNull注释对应返回的响应JSON

    我有一个简单的代码 当 RequestBody 中不存在 customerId 时 它返回错误 json VO 类 public class OrderVO private int orderId NotNull message Custo
  • 如何向 html 5 视频添加嵌入链接

    如果您在 Discord 中链接 YouTube 视频 它会在 Discord 上显示为可播放的视频 而不仅仅是链接 对于我的视频 如果我从我的网站链接它们 不和谐会将它们显示为链接而不是视频 我听说我需要在其中嵌入链接 但我不知道我在寻找
  • 打印机 println:未创建新行

    我正在尝试使用 Apache POI 类将 Outlook MSG 文件解码为文本文件 一切正常 除了println的方法PrintWriter 它不会创建新行 它只是将每个句子直接一个接一个地连接起来 下面代码片段的结果是 De text
  • 正则表达式将数字与逗号和点匹配

    我想使用匹配整数和浮点数re模块 因此 如果有人键入以下输入类型之一 它应该验证它是否是一个数字 1000 1 000 1 000 1 000 98 1 000 1 0 1 0000 现在我正在使用以下内容 0 9 任何帮助表示赞赏 对于给
  • 将 JSON 反序列化为对象

    我正在将 JSON 字符串反序列化为对象 我无法使用Dictionary
  • 是否可以为基于 Click 的界面中的所有子命令添加全局参数?

    我正在 virtualenv 下使用 Click 并使用entry pointsetuptools 中的指令将根映射到名为调度的函数 我的工具公开了两个子命令serve and config 我在顶级组上使用一个选项来确保用户始终通过 pa
  • 使用 useState hook 时 React 组件渲染两次

    我无法理解为什么我的应用程序反应组件渲染两次 如下面的 gif 所示 我在返回组件之前插入了一个 console log 以查看组件渲染了多少次 每当我删除 useState 挂钩时 我的应用程序就会像我想象的那样只渲染一次 欢迎任何关于为
  • 如何在Svelte中直接挂载HTMLElement?

    我正在使用一些返回 HTML 元素的外部代码 最好嵌入它 而无需通过 JavaScript 管理加载和所有内容 即appendChild removeChild 现在我正在使用 html element outerHTML 但这似乎不太优雅
  • 如何获取我的应用程序的任务列表及其活动堆栈?

    为了更好地理解活动 任务 每个任务的后台堆栈以及不同的启动模式之间的关系 我想编写一个包含大约 7 个活动的应用程序 在 3 个任务中运行 其中活动以不同的启动模式启动 并且我正在运行 我想显示每个活动的堆栈 并在我浏览应用程序并启动或关闭
  • Python 的 Vim 自动完成

    我正在尝试将自动完成功能合并到Vim http en wikipedia org wiki Vim 28text editor 29 我使用了 Vim 的全能补全功能皮迪克申 http www vim org scripts script
  • 从 R 中的向量创建频率计数[重复]

    这个问题在这里已经有答案了 假设有一个向量 其数值可能有重复值 x lt c 1 2 3 4 5 1 2 2 3 我想创建另一个计数向量 如下所示 它的长度与x 对于每个唯一值x 第一次出现为1 第二次出现为2 以此类推 我想要的新向量是