繁体   English   中英

如何使用日期向量对df进行子集化并获取所有匹配数据?

[英]How to subset a df with a vector of dates and getting all the matching data?

我试图在匹配日期上对我的df基础进行子集化。 我有日期格式要求的日期。 我的df上的日期采用相同的格式。 当我尝试我的代码时,我只获得匹配子集的第一行,每个日期可能有20个匹配的行。

我尝试在匹配矢量的df中使用带有逻辑搜索的子集

subset.met=subset(hr.met, hr.met$date == dates)

这是我的df

1 2018-12-20 07:00:00 NA 984.3140 4.7425 4.240365 203.2252
2 2018-12-20 08:00:00 NA 986.6738 2.6975 2.036287 175.7522
3 2018-12-20 09:00:00 NA 988.1152 3.7025 3.411026 212.9876
4 2018-12-20 10:00:00 NA 989.2403 3.7700 3.297027 216.7082
5 2018-12-20 11:00:00 NA 990.4552 4.0250 3.511919 225.3250
6 2018-12-20 12:00:00 NA 990.5790 3.7175 3.317329 222.5587
       dwd t2 rh sat vp h2o       date
1 24.77761 NA NA  NA NA  NA 2018-12-20
2 41.94633 NA NA  NA NA  NA 2018-12-20
3 21.79864 NA NA  NA NA  NA 2018-12-20
4 28.37998 NA NA  NA NA  NA 2018-12-20
5 27.86019 NA NA  NA NA  NA 2018-12-20
6 25.02467 NA NA  NA NA  NA 2018-12-20

这是我的日期矢量

"2019-02-06" "2019-02-07" "2019-02-08" "2019-02-11" "2019-02-12" "2019-02-13" "2019-02-15" "2019-02-16" "2019-02-17" "2019-02-18"
"2019-02-20" "2019-02-21" "2019-02-26" "2019-02-27" "2019-02-28" "2019-03-01" "2019-03-02" "2019-03-03" "2019-03-04" "2019-03-05"
"2019-03-12" "2019-03-13" "2019-03-14" "2019-03-15" "2019-03-16" "2019-03-17" "2019-03-19"

这就是我得到的

1004 2019-01-31 02:00:00       NA  990.8791 2.880833 2.716300
1042 2019-02-01 16:00:00       NA 1001.9768 1.759167 1.652109
1081 2019-02-03 07:00:00       NA  994.9080 3.465000 3.127165
1119 2019-02-04 21:00:00       NA  997.8129 3.465000 3.115460
1158 2019-02-06 12:00:00 296.4433  999.6472 2.322500 2.196016
1197 2019-02-08 03:00:00 306.4103  987.3516 2.096667 1.946248
            wd      dwd       t2       rh      sat       vp
1004  16.40826 18.24759       NA       NA       NA       NA
1042 213.26311 17.81623       NA       NA       NA       NA
1081  29.44621 24.45101       NA       NA       NA       NA
1119 203.37526 24.97175       NA       NA       NA       NA
1158  25.21708 17.95901 297.0304 82.88533 29.61701 24.54474
1197  27.73385 20.24611 306.8247 39.54208 52.31900 20.19168
          h2o       date
1004       NA 2019-01-31
1042       NA 2019-02-01
1081       NA 2019-02-03
1119       NA 2019-02-04
1158 993.8726 2019-02-06
1197 791.6034 2019-02-08

如果你看到我只得到每个日期的第一个匹配行,我需要所有行。

您可以创建一个逻辑向量来检查dates是否存在,如下所示:

hr.met$date %in% dates
grepl(dates, hr.met$date)

然后使用该向量子集,如:

subset(hr.met, date %in% dates)
dplyr::filter(hr.met, date %in% dates)
hr.met[grepl(dates, hr.met$date), ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM