在R中创建附加日期的向量

时间:2014-11-15 02:44:19

标签: r

我有一个包含3个字段的数据框(set1) - 日期(日期),价格(数字)和事件(逻辑) 。 我想创建一个向量,当事件为TRUE时返回日期

我能够以价格执行此操作:返回346个价格的向量

n <- c()
for(i in 1:length(set1$price)){
    if(set1$event[i] == TRUE) {
      n <- append(n,set1$price[i])
  }
}

但是,当我尝试对日期执行相同操作时,仅当事件为TRUE时,仅返回第一个日期:2001-10- 29

n <- c()
for(i in 1:length(set1$date)){
    if(set1$event[i] == TRUE) {
      n <- append(n,set1$date[i])
  }
}

我尝试将空矢量指定为日期字段,但结果仍然相同:

n <- c()
n <- as.Date(as.character(n), format = "%Y%m%d")

1 个答案:

答案 0 :(得分:1)

您可以对逻辑向量[使用event子集。例如,这里有一些补充数据

date <- seq(Sys.Date()-5, Sys.Date(), 1)
event <- c(FALSE, TRUE, TRUE, FALSE, FALSE, TRUE)
(set1 <- data.frame(date, event))
#         date event
# 1 2014-11-09 FALSE
# 2 2014-11-10  TRUE
# 3 2014-11-11  TRUE
# 4 2014-11-12 FALSE
# 5 2014-11-13 FALSE
# 6 2014-11-14  TRUE

然后,您可以通过date向量对event向量进行子集化,并且将返回事件为TRUE的所有日期。

with(set1, date[event])
# [1] "2014-11-10" "2014-11-11" "2014-11-14"

您可以对数据中的定价列执行相同操作。