按另一列中的多列过滤一个数据框

时间:2018-10-24 16:01:53

标签: r dplyr

抱歉,这是一个愚蠢的问题!

我的目标与此处的帖子基本相同:Take dates from one dataframe and filter data in another dataframe - R,并继续使用dplr,因为稍后我将使用row_wise()在数据集的所有行上运行此代码

但是,就我而言,我希望从第二个数据框中的2个不同的列中获取“开始”和“结束”年份。

这里有一些虚拟数据(取自原始帖子,并适应了我的问题):

main_data = data.frame(year=c(1966:2017))

second_data = data.frame(Participant = c(1:6),
           Start_year = c(2012,1994,1974,1983,1969,2002),
           End_year = c(2017,2017,2017,2017,2017,2017))

并根据原始帖子编写了以下代码:

filtered.total =
   main_data %>% 
   rowwise() %>% 
   mutate(year = any(year >= second_data$Start_year & year <= 
      second_data$End_year)) %>%
   filter(year) %>%
   data.frame()

我还在按位置(国家和县)过滤数据,但这只是为我的数据集提供了以下错误消息:

Error in filter_impl(.data, quo) : Result must have length 2299, not 0

以及上面的虚拟数据:

 In year <= second_data$End_year :
 longer object length is not a multiple of shorter object length

感谢您的帮助-R相当陌生,我的博士现在正在测试我的基本知识!

1 个答案:

答案 0 :(得分:0)

您可能需要使用min(second_data$year)max(second_data$year),因为目前您要提供许多可比较的值,我认为它对此有所抱怨。