R Lubridate 将数据 table 列值作为参数传递给月份参数而不是固定整数
R Lubridate pass a data table column value as the argument to month parameter instead of fixed integer
我有一个包含两列的数据 table:一列是日期,另一列是整数值。我想使用整数列中的值作为添加到日期列的月数。我觉得这可能需要像 apply [or lapply] 这样的东西来遍历行,因为传递 datatable 列在技术上不是标量输入值,而是多个标量的向量。关于如何实现这一目标的任何快速想法?
适用于我的数据集
dateTableProdKeep$"PROD_month" <- dateTableProdKeep$"calc_new_date" %m+% months(1)
在尝试将数据table 列传递给月份参数时不起作用
dateTableProdKeep$"PROD_month" <- dateTableProdKeep$"calc_new_date" %m+% months(dataTableProdKeep$"Month")
这是一个示例,其中将 1 作为参数传递给 months。我希望该值来自月份列。
library(lubridate)
#library(tibble)
calc_new_date <- c( "1/1/2022" , "1/31/2022" )
Month <- c( 3 , 1 )
dateTableProdKeep <- data.frame( calc_new_date , Month )
dateTableProdKeep$"calc_new_date" <- as.Date( dateTableProdKeep$"calc_new_date" , format="%m/%d/%Y" )
dateTableProdKeep
dateTableProdKeep$"PROD_month" <- dateTableProdKeep$"calc_new_date" %m+% months(1)
dateTableProdKeep
dateTableProdKeep
calc_new_date Month PROD_month
1 1/1/2022 3 2022-01-01
2 1/31/2022 1 2022-01-31
使用改编自@MartinGal 并应用于我的原始问题的解决方案示例更新代码:
library(lubridate)
#library(tibble)
calc_new_date <- c( "1/1/2022" , "1/31/2022" )
Month <- c( 3 , 1 )
dateTableProdKeep <- data.frame( calc_new_date , Month )
dateTableProdKeep$"calc_new_date" <- as.Date( dateTableProdKeep$"calc_new_date" , format="%m/%d/%Y" )
dateTableProdKeep
#dateTableProdKeep$"PROD_month" <- dateTableProdKeep$"calc_new_date" %m+% months(1)
dateTableProdKeep
#tibble(x = 1:100,date = seq(as.Date("2001-01-31"),by = "months", length = length(x)),z = date %m+% months(x))
dateTableProdKeep$"new" <- dateTableProdKeep$"calc_new_date" %m+% months(dateTableProdKeep$"Month")
dateTableProdKeep
calc_new_date Month new
1 2022-01-01 3 2022-04-01
2 2022-01-31 1 2022-02-28
这是你要得到的吗:
tibble(x = 1:100,date = seq(as.Date("2000-01-01"),by = "months", length = length(x)),z = date %m+% months(x))
我有一个包含两列的数据 table:一列是日期,另一列是整数值。我想使用整数列中的值作为添加到日期列的月数。我觉得这可能需要像 apply [or lapply] 这样的东西来遍历行,因为传递 datatable 列在技术上不是标量输入值,而是多个标量的向量。关于如何实现这一目标的任何快速想法?
适用于我的数据集
dateTableProdKeep$"PROD_month" <- dateTableProdKeep$"calc_new_date" %m+% months(1)
在尝试将数据table 列传递给月份参数时不起作用
dateTableProdKeep$"PROD_month" <- dateTableProdKeep$"calc_new_date" %m+% months(dataTableProdKeep$"Month")
这是一个示例,其中将 1 作为参数传递给 months。我希望该值来自月份列。
library(lubridate)
#library(tibble)
calc_new_date <- c( "1/1/2022" , "1/31/2022" )
Month <- c( 3 , 1 )
dateTableProdKeep <- data.frame( calc_new_date , Month )
dateTableProdKeep$"calc_new_date" <- as.Date( dateTableProdKeep$"calc_new_date" , format="%m/%d/%Y" )
dateTableProdKeep
dateTableProdKeep$"PROD_month" <- dateTableProdKeep$"calc_new_date" %m+% months(1)
dateTableProdKeep
dateTableProdKeep
calc_new_date Month PROD_month
1 1/1/2022 3 2022-01-01
2 1/31/2022 1 2022-01-31
使用改编自@MartinGal 并应用于我的原始问题的解决方案示例更新代码:
library(lubridate)
#library(tibble)
calc_new_date <- c( "1/1/2022" , "1/31/2022" )
Month <- c( 3 , 1 )
dateTableProdKeep <- data.frame( calc_new_date , Month )
dateTableProdKeep$"calc_new_date" <- as.Date( dateTableProdKeep$"calc_new_date" , format="%m/%d/%Y" )
dateTableProdKeep
#dateTableProdKeep$"PROD_month" <- dateTableProdKeep$"calc_new_date" %m+% months(1)
dateTableProdKeep
#tibble(x = 1:100,date = seq(as.Date("2001-01-31"),by = "months", length = length(x)),z = date %m+% months(x))
dateTableProdKeep$"new" <- dateTableProdKeep$"calc_new_date" %m+% months(dateTableProdKeep$"Month")
dateTableProdKeep
calc_new_date Month new
1 2022-01-01 3 2022-04-01
2 2022-01-31 1 2022-02-28
这是你要得到的吗:
tibble(x = 1:100,date = seq(as.Date("2000-01-01"),by = "months", length = length(x)),z = date %m+% months(x))