我试图弄清楚为什么我不能在 R 中进行子集化。
我的数据集 Rdataset 有 3 列:Epoch、Distance 和 BaselineVectorID。我想做的是根据时代的多个条件对距离进行子集化。我查看了 StackOverflow 上的多个问答,并在我的数据集上尝试了许多响应,但都没有奏效。这是背景:
首先,使用 Epoch 从 2007-11-15 到 2011-03-30 我设置
StartDate <- "2008-01-01"
as.numeric(as.Date(StartDate)); StartDate
然后我量化时间窗口的持续时间
ShortTermDuration <- 30
LongTermDuration <- 365
然后我定义时间窗口,
MonthAhead <- as.Date(StartDate) + ShortTermDuration; MonthAhead
MonthBehind <- as.Date(StartDate) - ShortTermDuration; MonthBehind
然后我想通过子集定义较小的数据集,并尝试了以下每种不同的方法以及相关的结果:
1.
Rdataset[Rdataset$Epoch >= "2008-01-01" & Rdataset$Epoch < "2008-02-01"]
结果:
data frame with 0 columns and 703 rows
2.
ShortTermDataset <- subset(Rdataset, Epoch>=MonthBehind & Epoch<=MonthAhead)
结果:
Warning messages:
1: In eval(expr, envir, enclos) :
Incompatible methods ("Ops.POSIXt", "Ops.Date") for ">="
2: In eval(expr, envir, enclos) :
Incompatible methods ("Ops.POSIXt", "Ops.Date") for "<="
[1] Epoch Distance BaselineVectorID
<0 rows> (or 0-length row.names)
3.
ShortTerm.df <- Rdataset[Epoch>=MonthBehind & Epoch<MonthAhead, ]
结果:
Error in `[.data.frame`(Rdataset, Epoch >= MonthBehind & Epoch < MonthAhead, :
object 'Epoch' not found
所以这些方法都不起作用。我的首选技术是#3。
为了清楚起见,我的问题是如何使用我喜欢的方法或其他方法之一进行子集化?