首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤两个日期之间的数据

过滤两个日期之间的数据
EN

Stack Overflow用户
提问于 2018-12-13 04:36:12
回答 1查看 110关注 0票数 0

我有一个有日期列和其他列的dataframe。我需要根据日期进行过滤。

DF

代码语言:javascript
复制
dates   A   
2018-09 3
2018-10 4
2018-11 2
2018-12 66
2019-01 5

在这里,如果criteria_12018-10criteria_22018-12,我需要过滤数据,包括这两个条件。

代码语言:javascript
复制
data_ <- data_[grep(criteria_1,data_$dates) & grep(criteria_2,data_$dates)]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-13 04:43:32

我们可以使用grep获取行索引,然后对数据进行子集。

代码语言:javascript
复制
criteria_1 = "2018-10"
criteria_2 = "2018-12"
df[grep(criteria_1, df$dates):grep(criteria_2, df$dates), ]

#   dates  A
#2 2018-10  4
#3 2018-11  2
#4 2018-12 66

如果存在一些超出范围的问题,我们可以使用match代替使用适当的nomatch参数。

代码语言:javascript
复制
df[match(criteria_1, df$dates, nomatch = 1):
   match(criteria_2, df$dates, nomatch = nrow(df)), ]

因此,如果crietria_2超出了default的范围,它将转到最后一行。

代码语言:javascript
复制
criteria_1 = "2018-10"
criteria_2 = "2018-aa"
df[match(criteria_1, df$dates, nomatch = 1):
   match(criteria_2, df$dates, nomatch = nrow(df)), ]

#    dates  A
#2 2018-10  4
#3 2018-11  2
#4 2018-12 66
#5 2019-01  5

如果criteria_1超出了范围,我们可以通过default转到第一行,它会转到第一行。

代码语言:javascript
复制
criteria_1 = "2018-aa"
criteria_2 = "2018-12"
df[match(criteria_1, df$dates, nomatch = 1):
   match(criteria_2, df$dates, nomatch = nrow(df)), ]

#    dates  A
#1 2018-09  3
#2 2018-10  4
#3 2018-11  2
#4 2018-12 66
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53755072

复制
相关文章

相似问题

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