如何基于基R中的另一个数据帧对数据帧进行子集化

时间:2015-10-11 21:54:33

标签: r

假设有一个数据框(称为df1)

203       Feb 2014  353
204       Feb 2015  416
205       Feb 2057    2
206       Feb 2058    1
207       Feb 2062    1
208       Feb 2064    1
209       Feb 2065    1
210       Feb 2066    4
211       Feb 2067   10
212       Feb 2068    3
213       Jan 1969  123
214       Jan 1970  120
215       Jan 1971  162
216       Jan 1972  159
217       Jan 1973  109
218       Jan 1974   98

和另一个数据帧(称为df2)

1         Feb 2014
2         Jan 1974

然后我如何制作df1的子集以便

204       Feb 2015  416
218       Jan 1974   98

有没有办法用基础R做这个?

2 个答案:

答案 0 :(得分:1)

假设您的数据如下所示:

df1 <- read.table(text='203       "Feb 2014"  353
                  204       "Feb 2015"  416
                  205       "Feb 2057"    2
                  206       "Feb 2058"    1
                  207       "Feb 2062"    1
                  208       "Feb 2064"    1
                  209       "Feb 2065"    1
                  210       "Feb 2066"    4
                  211       "Feb 2067"   10
                  212       "Feb 2068"    3
                  213       "Jan 1969"  123
                  214       "Jan 1970"  120
                  215       "Jan 1971"  162
                  216       "Jan 1972"  159
                  217       "Jan 1973"  109
                  218       "Jan 1974"   98')


df2 <- read.table(text='1         "Feb 2015"
2         "Jan 1974"')

并且假设您的意思是Feb 2015而不是Feb 2014(因为2015年2月的另一列为416),您可以这样做:

#you use the %in% operator to find which elements of df2 exist in df1
#and use those to subset df1
df1[df1$V2 %in% df2$V2, ]
    V1       V2  V3
2  204 Feb 2015 416
16 218 Jan 1974  98

答案 1 :(得分:0)

尝试dplyr

library(dplyr)

df2 %>% left_join(df1)