我有一个包含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")
答案 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"
您可以对数据中的定价列执行相同操作。