给定两个Year + 1/3/5整数,请生成一个所有Year + 1/3/5整数(包括两者)的向量

时间:2018-11-19 13:48:07

标签: r

我的示例开始

yr_min <- 20181
yr_max <- 20195

as.numeric(paste0(rep(
  seq(as.numeric(substr(yr_min, 1, 4)), 
      as.numeric(substr(yr_max, 1, 4))), 
  each = 3),
  c(1, 3, 5)))

[1] 20181 20183 20185 20191 20193 20195

上述代码有什么问题?它不会泛滥到yr_min1结尾而yr_max5结尾的情况。

例如:

yr_min <- 20183
yr_max <- 20193

as.numeric(paste0(rep(
  seq(as.numeric(substr(yr_min, 1, 4)), 
      as.numeric(substr(yr_max, 1, 4))), 
  each = 3),
  c(1, 3, 5)))

[1] 20181 20183 20185 20191 20193 20195

所需的输出是

[1] 20183 20185 20191 20193

3 个答案:

答案 0 :(得分:3)

我建议您在计算中使用真实日期。这使我们能够利用基数R的seq函数:

x <- seq(as.Date("2018/3/1"), as.Date("2019/3/1"), by="month")
x[format(x, "%m") %in% c("01", "03", "05")]

[1] "2018-03-01" "2018-05-01" "2019-01-01" "2019-03-01"

如果您确实想要确切的格式,则可以通过再次调用format来轻松实现:

y <- x[format(x, "%m") %in% c("01", "03", "05")]
format(y, "%Y%m")

[1] "201803" "201805" "201901" "201903"

或者,为您的 exact 输出:

sub("(?<=\\d{4}).", "", format(y, "%Y%m"), perl=TRUE)

[1] "20183" "20185" "20191" "20193"

答案 1 :(得分:2)

1)生成年份的整个序列,然后import {Component, NgModule, OnInit, OnChanges, SimpleChanges, Input } from '@angular/core' @Component({ selector: 'example', template: ` <input [(ngModel)]='name' (ngModelChange)="onChanges()" /> `, }) export class Example implements OnInit{ private _value: string; name: string; // @Input() name: string; <--- no need constructor() { } ngOnInit() { this.name = 'qwe'; } onChanges() { console.log(this.name); } } 取出不是1,3,5模10的任何东西。

Filter()
  • 这是R中的结构为Filter(), Map(), Reduce()...的函数式编程
  • 正如其他人所说,对于这些特定的余数1,3,5,您可以利用只需要步骤2:rem_135_mod10 <- function(x) { (x %% 10) %in% c(1,3,5) } Filter(rem_135_mod10, seq(yr_min, yr_max)) # 20181 20183 20185 20191 20193 20195

或2)生成基数为20180、20190 ...的基数序列,并自己添加偏移量1,3,5。相同。

答案 2 :(得分:0)

预定义数据:

end_vec <- c(1, 3, 5)
yr_min  <- 20183
yr_max  <- 20193

代码:

ans<-
c(
sapply(c(yr_min, yr_max), function(x) {n<-nchar(x);as.numeric(paste0(substr(x,1,n-1),end_vec))})
)

ans[dplyr::between(ans, yr_min, yr_max)]

结果:

# [1] 20183 20185 20191 20193