首先需要创建相同的数据;
library(tibbletime)
date <- seq(from = as.Date("1979-09-01"), to = as.Date("2019-12-01"), by = "month")
n <- length(date)
df <- matrix(NA, n, 2)
df <- data.frame(df)
var <- sample(1000:5000, n)
df[1] <- date
df[2] <- var
names(df) <- c("date", "var")
df <- as_tbl_time(df, index = date)如何使用下面的命令;
filter_time(df, ~"1979-09")by paste0,eval(parse(text = "") )我试过了;
filter_time(eval(parse(text = paste0("df",",", "~" , "1979-09",sep = ""))))但它并没有起作用。我有时间对象的问题,它必须是文本格式。如果该代码正常工作,则可以在for循环中使用,谢谢。
发布于 2021-09-27 19:58:16
您也可以使用as.formula()来实现这一点
filter_time(df, as.formula(paste0("~", '"', year, '"')))Full reprex:
library(tibbletime)
date <- seq(from = as.Date("1979-09-01"), to = as.Date("2019-12-01"), by = "month")
n <- length(date)
df <- matrix(NA, n, 2)
df <- data.frame(df)
var <- sample(1000:5000, n)
df[1] <- date
df[2] <- var
names(df) <- c("date", "var")
df <- as_tbl_time(df, index = date)
year <- paste("1979-09")
paste0("~", '"', year, '"')
#> [1] "~\"1979-09\""
as.formula(paste0("~", '"', year, '"'))
#> ~"1979-09"
filter_time(df, as.formula(paste0("~", '"', year, '"')))
#> # A time tibble: 1 x 2
#> # Index: date
#> date var
#> <date> <int>
#> 1 1979-09-01 3600发布于 2021-09-27 19:46:38
我们可以使用reformulate来构造表达式
library(tibbletime)
filter_time(df, reformulate(termlabels = dQuote("1979-09", FALSE)))-output
# A time tibble: 1 × 2
# Index: date
date var
<date> <int>
1 1979-09-01 1700https://stackoverflow.com/questions/69352418
复制相似问题