在我的数据集中,我想创建一个新变量,其中月份设置为倒数。我可以这样做:
df$month.min.1 <- gsub('1', '12', df$month)
df$month.min.1 <- gsub('2', '1', df$month)
df$month.min.1 <- gsub('3', '2', df$month)
df$month.min.1 <- gsub('4', '3', df$month)
....
由于我还想创建将月份向后设置两个和三个月的变量,我想知道是否有更有效的方法来做到这一点?
最佳答案
听起来您只有 1 到 12 来代表您的“月份”。如果是这种情况,您可以编写如下函数:
myfun <- function(x = 1:12, n = 1) c(tail(x, n), head(x, -n))
myfun()
# [1] 12 1 2 3 4 5 6 7 8 9 10 11
然后您可以使用它来创建滞后值。
一些例子:
set.seed(1)
x <- sample(12, 20, replace = TRUE) ## Imagine this is your "month" variable
x
# [1] 4 5 7 11 3 11 12 8 8 1 3 3 9 5 10 6 9 12 5 10
myfun()[x] ## Default -- set one month backwards
# [1] 3 4 6 10 2 10 11 7 7 12 2 2 8 4 9 5 8 11 4 9
myfun(n = 2)[x] ## "n" can be changed
# [1] 2 3 5 9 1 9 10 6 6 11 1 1 7 3 8 4 7 10 3 8
关于r - 有效地向后设置第一个月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20823984/