gpt4 book ai didi

r - 计算某个值已出现次数的函数/指令

转载 作者:太空宇宙 更新时间:2023-11-03 19:26:05 25 4
gpt4 key购买 nike

我正在尝试确定 MATLAB 或 R 是否具有类似于以下内容的函数。

假设我有一个输入向量 v

v = [1, 3, 1, 2, 4, 2, 1, 3]

我想生成一个向量,w,其长度与 v 相同。每个元素 w[i] 应该告诉我以下内容:对于相应的值 v[i],到目前为止该值在 v 中遇到了多少次,即在 v 的所有元素中,直到但不包括位置 i。在这个例子中

w = [0, 0, 1, 0, 0, 1, 2, 1]

我真的很想看看是否有任何统计或特定领域的语言具有这样的函数/指令,以及它可能被称为什么。

最佳答案

R 中,你可以试试这个:

 v <- c(1,3,1,2,4,2,1,3)
ave(v, v, FUN=seq_along)-1
#[1] 0 0 1 0 0 1 2 1

说明

 ave(seq_along(v), v, FUN=seq_along)  #It may be better to use `seq_along(v)` considering different classes i.e. `factor` also.
#[1] 1 1 2 1 1 2 3 2

在这里,我们通过 v 对元素序列进行分组。对于匹配同一组的元素,seq_along 函数将创建 1,2,3 etc。在 v 的情况下,同一组 1 的元素位于位置 1,3,7,因此那些对应的位置将是 1,2,3。通过用 1 减去,我们将能够从 0 开始。

为了更好地理解它,

 lst1 <- split(v,v)
lst2 <- lapply(lst1, seq_along)
unsplit(lst2, v)
#[1] 1 1 2 1 1 2 3 2

使用data.table

  library(data.table)
DT <- data.table(v, ind=seq_along(v))
DT[, n:=(1:.N)-1, by=v][,n[ind]]
#[1] 0 0 1 0 0 1 2 1

关于r - 计算某个值已出现次数的函数/指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25401035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com