如何使用dplyr滤波器从另一个数据帧中选择满足两个条件的观测值?

时间:2016-06-23 17:22:32

标签: r dplyr

我的数据框架似乎是

state    year  taxrev
Alabama  1970  209297
Alabama  1971  239502
...
Alabama  1981  239502
Alaska   1970  209701
Alaska   1971  230980
...
Alaska   1981  230982
...

我也有像这样的参考数据框

state   year 
Alabama  1975
Alaska   1977
Illinois 1973
...

如何使用dplyr获取参考数据框中州 - 年对的taxrev(我知道如何使用基数R)?

3 个答案:

答案 0 :(得分:1)

假设列在您的示例中一致地命名,并且您的2个数据帧分别称为taxrev_df和reference_df:

reference_df <- left_join(reference_df, taxrev_df)

答案 1 :(得分:0)

这也可能有效,但由于没有可重复的数据而未经测试:

reference_df %>%
 filter(year %in% taxrev_df$year)

答案 2 :(得分:0)

您不需要过滤。使用match_df包的plyr功能。

参见此示例

数据

my_data <- data.frame(state=c(rep("Alabama",3),rep("Alaska",3)),year=c(1970,1971,1975,1977,1963,1975),taxrev=c(209297,239502,254663,209701,230982,26789))
ref_data <- data.frame(state=c("Alabama","Alaska"),year=c(1975,1977))

R代码

match_df(my_data,ref_data)

<强>输出

    state year taxrev
3 Alabama 1975 254663
4  Alaska 1977 209701