gpt4 book ai didi

R:如何为向量中的每个唯一值分配一个运行计数器?

转载 作者:行者123 更新时间:2023-12-02 05:26:47 24 4
gpt4 key购买 nike

我遇到过这个问题。我想确定 future 100 年每个月的第二个星期日是哪一天。这是我的代码

x <- seq(as.Date("2014-9-01"),as.Date("2014-9-01")+100*365.25,1)

y <- format(x,"%Y%m")

xx <- NULL
for(i in unique(y)) {
w <- which(y == i)
xx <- c(xx,x[w[which(weekdays(x[w]) == "Sunday")[2]]])
}

head(xx)
tail(xx)

我已经实现了,但我不得不使用循环。如何使用矢量化代码更有效地做到这一点?

一般来说,假设有一个具有 n 个不同值的向量 v,我如何为 v 的每个不同值分配递增的值,每个不同值从 1 开始值(value)。也就是说,假设我从一个向量开始

v <- c(1,1,1,2,2,2,2,3,4,4)

我想生成一个“运行计数器”,v.counterv

中的唯一值
v.counter <- c(1,2,3,1,2,3,4,1,1,2)

显然我可以编写一个循环来执行此操作。但是我该如何使用矢量化代码来做到这一点呢?

最佳答案

您可以使用 dplyr 进行运行计数:

library(dplyr)

dat = data.frame(x=rep(1:10, each=3))

dat = dat %>%
group_by(x) %>%
mutate(x_count=1:n())

x x_count
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 2 3
...
25 9 1
26 9 2
27 9 3
28 10 1
29 10 2
30 10 3

关于R:如何为向量中的每个唯一值分配一个运行计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26031657/

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