![](/img/trans.png)
[英]How to subset a df in several df using date dates in a second df in R
[英]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.