首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对区间向量进行润色

对区间向量进行润色
EN

Stack Overflow用户
提问于 2017-01-28 01:01:24
回答 2查看 796关注 0票数 4

我试图处理一组润滑油间隔,并确定日期是否在该集合的任何成员之内。我的时间间隔是不重叠的,但一般的答案是最好的。

在开始数据分析之前,我不知道在这组间隔中有多少间隔:

代码语言:javascript
复制
library(lubridate)

#Create 4 dates; 2 pairs

start1 <-ymd("2015-01-01")
stop1 <-ymd("2015-01-08")

start2 <-ymd("2015-02-01")
stop2 <-ymd("2015-02-08")

#Make 2 non-overlapping intervals

interval1 <-start1%--%stop1 

interval2 <-start2%--%stop2 

#two more dates, each within an interval

day1 <-ymd("2015-01-04")

day2 <-ymd("2015-02-04")

#now test the new dates against the intervals.

day1 %within%interval1 #TRUE

day2 %within%interval1 #FALSE

day2 %within%interval2 #TRUE

我可以做到:

代码语言:javascript
复制
day2 %within%c(interval1, interval2) #(FALSE, TRUE)

如果我想一想,我肯定会强迫自己成为一个真实的人。

但我怎么能问呢?

代码语言:javascript
复制
#Don't Run:

INTERVALS <-c(interval1, interval2, ... intervalN)

day2 %within% INTERVALS

例如,X是在Y工作时发生的,其中“Y工作时”是间隔的向量。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2017-01-28 01:18:04

您可以将所有内容向量化,然后使用lapply为您想要检查的每一天使用%within%

代码语言:javascript
复制
library(lubridate)

start <-ymd("2015-01-01", "2015-02-01")
stop <-ymd("2015-01-08", "2015-02-08")

days <-ymd("2015-01-04", "2015-02-04")

lapply(days, `%within%`, start %--% stop)
#> [[1]]
#> [1]  TRUE FALSE
#> 
#> [[2]]
#> [1] FALSE  TRUE

它是days的每个元素的列表,是否在每个间隔中。若要检查days的每个元素是否在任何间隔内,请为*apply编写一个匿名函数

代码语言:javascript
复制
sapply(days, function(x){any(x %within% interval(start, stop))})
## [1] TRUE TRUE
票数 3
EN

Stack Overflow用户

发布于 2021-11-06 11:54:19

您可以使用我的santoku包中的chop()

代码语言:javascript
复制
library(santoku)
chop(c(day1, day2), c(start1, stop1, start2, stop2))
##  [1] [2015-01-01, 2015-01-08) [2015-02-01, 2015-02-08)
## Levels: [2015-01-01, 2015-01-08) [2015-02-01, 2015-02-08)

请注意,这也将捕获stop1和start2之间的任何内容。然后,您可以选择您关心的时间间隔。或者你可以改变标签:

代码语言:javascript
复制
chop(c(day1, day2), c(start1, stop1, start2, stop2), 
       labels = c("Interval1", "Out2", "Interval2"))
## [1] Interval1 Interval2
## Levels: Interval1 Interval2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41905358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档