使用向量索引条件

时间:2014-05-14 15:36:34

标签: r

我有两个包含时间序列的数据框,不幸的是,它有一个较少的元素。我想提取较长数据框的行,在较短的数据框中存在一个具有相应日期的条目。

我的想法是简单地在向量中获取较短数据帧的Date值,并以某种方式在索引条件中使用该向量,以便只有日期条目包含在Date中的较长数据帧的条目选择索引条件中的向量。不幸的是我无法找到一种在布尔条件下使用向量的方法,而我找到的唯一解决方案是编写慢速for循环。任何人都可以告诉我如何在没有for循环的情况下做到这一点吗?

1 个答案:

答案 0 :(得分:1)

考虑以下示例。您有两个data.frames df1df2,其中df1的行数多于df2

date <- seq(as.Date("2014-01-01"),as.Date("2014-01-10"), 1)
value <- 20:29
df1 <- data.frame(date,value)

df1
#         date value
#1  2014-01-01    20
#2  2014-01-02    21
#3  2014-01-03    22
#4  2014-01-04    23
#5  2014-01-05    24
#6  2014-01-06    25
#7  2014-01-07    26
#8  2014-01-08    27
#9  2014-01-09    28
#10 2014-01-10    29

date <- seq(as.Date("2014-01-01"),as.Date("2014-01-10"), 2)
value2 <- 5:1
df2 <- data.frame(date, value2)

df2
#        date value2 
#1 2014-01-01      5
#2 2014-01-03      4
#3 2014-01-05      3
#4 2014-01-07      2
#5 2014-01-09      1

要提取date中具有相应df2条目的df1的所有行,您可以使用%in%运算符:

df1[df1$date %in% df2$date, ]

#        date value
#1 2014-01-01    20
#3 2014-01-03    22
#5 2014-01-05    24
#7 2014-01-07    26
#9 2014-01-09    28

最有可能的是,这对您的数据也是一样的。