r - 有效地向后设置第一个月

标签 r date

在我的数据集中,我想创建一个新变量,其中月份设置为倒数。我可以这样做:

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/

相关文章:

r - 实现 dplyr 的 filter() 以显示多年的多个条目

javascript - 使用 R 从带有 JavaScript 按钮的 ASP.NET 网页中抓取表格

python - 比较Python时间和MySQL时间格式

r - dplyr 中的长变量名称失败

r - 如何在R中将数据移动两个月?

java - 计算两个日历日期之间的工作日差异

javascript - 获取当月最后一个星期日 - JavaScript

mysql - 如何阻止 '0000-00-00 00:00:00' 日期值进入我的 MySQL 表?

r - 使用Ifelse时Igraph无效索引错误

bash - 在 awk 字符串中调用 'date' 命令,格式为 +%a