我有两个包含时间序列的数据框,不幸的是,它有一个较少的元素。我想提取较长数据框的行,在较短的数据框中存在一个具有相应日期的条目。
我的想法是简单地在向量中获取较短数据帧的Date值,并以某种方式在索引条件中使用该向量,以便只有日期条目包含在Date中的较长数据帧的条目选择索引条件中的向量。不幸的是我无法找到一种在布尔条件下使用向量的方法,而我找到的唯一解决方案是编写慢速for循环。任何人都可以告诉我如何在没有for循环的情况下做到这一点吗?
答案 0 :(得分:1)
考虑以下示例。您有两个data.frames df1
和df2
,其中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
最有可能的是,这对您的数据也是一样的。