Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中创建多个日期范围的子集_R_Lubridate - Fatal编程技术网

如何在R中创建多个日期范围的子集

如何在R中创建多个日期范围的子集,r,lubridate,R,Lubridate,我有一个数据框,上面有日期和数字,叫做“df”。我有另一个带有开始和结束日期的数据框,称为“日期范围” 我的目标是筛选/子集df,使其仅显示日期范围列每行中的开始/结束日期。以下是我目前的代码: df_date您可以尝试循环索引 for(i按顺序排列(日期范围$start\u日期)){ 印刷品( df%>% 过滤器(介于(df_日期、日期_范围$start_日期[i]、日期_范围$end_日期[i])) } 您可以尝试在索引中循环 for(i按顺序排列(日期范围$start\u日期)){ 印刷

我有一个数据框,上面有日期和数字,叫做“df”。我有另一个带有开始和结束日期的数据框,称为“日期范围”

我的目标是筛选/子集df,使其仅显示日期范围列每行中的开始/结束日期。以下是我目前的代码:



df_date您可以尝试循环索引

for(i按顺序排列(日期范围$start\u日期)){
印刷品(
df%>%
过滤器(介于(df_日期、日期_范围$start_日期[i]、日期_范围$end_日期[i]))
}

您可以尝试在索引中循环

for(i按顺序排列(日期范围$start\u日期)){
印刷品(
df%>%
过滤器(介于(df_日期、日期_范围$start_日期[i]、日期_范围$end_日期[i]))
}
基本R解决方案:

# Your data creation can be simplified: 
df <- data.frame(df_date = seq.Date(as.Date('2010-01-01', "%Y-%m-%d"), as.Date('2010-04-30', "%Y-%m-%d"),
                                    by = 1), df_numbers = c(1:120))

# Store start and end date vectors to filter the data.frame: 
start_dates <- as.Date(c("2010-01-06", "2010-02-01", '2010-04-15'))
end_dates <- as.Date(c("2010-01-23", "2010-02-06", '2010-04-29'))

# Subset the data to extract records with matching dates: df => stdout (Console
df[df$df_date %in% c(start_dates, end_dates),]
#您的数据创建可以简化:
df基础R溶液:

# Your data creation can be simplified: 
df <- data.frame(df_date = seq.Date(as.Date('2010-01-01', "%Y-%m-%d"), as.Date('2010-04-30', "%Y-%m-%d"),
                                    by = 1), df_numbers = c(1:120))

# Store start and end date vectors to filter the data.frame: 
start_dates <- as.Date(c("2010-01-06", "2010-02-01", '2010-04-15'))
end_dates <- as.Date(c("2010-01-23", "2010-02-06", '2010-04-29'))

# Subset the data to extract records with matching dates: df => stdout (Console
df[df$df_date %in% c(start_dates, end_dates),]
#您的数据创建可以简化:

dfA
tidyverse
方法可以是在
start
end\u日期之间创建一个序列
,并与
df
结合,只保留范围内的日期

library(dplyr)

date_ranges %>%
  mutate(df_date = purrr::map2(start_dates, end_dates, seq, "day")) %>%
  tidyr::unnest(df_date) %>%
  select(-start_dates, -end_dates) %>%
  left_join(df, by = 'df_date')

# A tibble: 39 x 2
#   df_date    df_numbers
#   <date>          <int>
# 1 2010-01-06          6
# 2 2010-01-07          7
# 3 2010-01-08          8
# 4 2010-01-09          9
# 5 2010-01-10         10
# 6 2010-01-11         11
# 7 2010-01-12         12
# 8 2010-01-13         13
# 9 2010-01-14         14
#10 2010-01-15         15
# … with 29 more rows
库(dplyr)
日期范围%>%
突变(df_日期=purrr::map2(开始日期,结束日期,顺序,“日期”))%>%
tidyr::unnest(df_日期)%>%
选择(-开始日期,-结束日期)%>%
左联合(df,by='df\U日期')
#A tibble:39 x 2
#df_日期df_编号
#             
# 1 2010-01-06          6
# 2 2010-01-07          7
# 3 2010-01-08          8
# 4 2010-01-09          9
# 5 2010-01-10         10
# 6 2010-01-11         11
# 7 2010-01-12         12
# 8 2010-01-13         13
# 9 2010-01-14         14
#10 2010-01-15         15
#…还有29行

tidyverse
方法可以是在
start
end\u日期之间创建一个序列,并与
df
结合,只保留范围内的日期

library(dplyr)

date_ranges %>%
  mutate(df_date = purrr::map2(start_dates, end_dates, seq, "day")) %>%
  tidyr::unnest(df_date) %>%
  select(-start_dates, -end_dates) %>%
  left_join(df, by = 'df_date')

# A tibble: 39 x 2
#   df_date    df_numbers
#   <date>          <int>
# 1 2010-01-06          6
# 2 2010-01-07          7
# 3 2010-01-08          8
# 4 2010-01-09          9
# 5 2010-01-10         10
# 6 2010-01-11         11
# 7 2010-01-12         12
# 8 2010-01-13         13
# 9 2010-01-14         14
#10 2010-01-15         15
# … with 29 more rows
库(dplyr)
日期范围%>%
突变(df_日期=purrr::map2(开始日期,结束日期,顺序,“日期”))%>%
tidyr::unnest(df_日期)%>%
选择(-开始日期,-结束日期)%>%
左联合(df,by='df\U日期')
#A tibble:39 x 2
#df_日期df_编号
#             
# 1 2010-01-06          6
# 2 2010-01-07          7
# 3 2010-01-08          8
# 4 2010-01-09          9
# 5 2010-01-10         10
# 6 2010-01-11         11
# 7 2010-01-12         12
# 8 2010-01-13         13
# 9 2010-01-14         14
#10 2010-01-15         15
#…还有29行