select 行(按时间戳的元素组成部分)

select rows by element components of timestamp

我有一个由时间戳组成的矢量 POSIXlt,格式:“2015-01-05 15:00:00,我从时间范围中提取出来。

我想通过丢失 Minutes != 00

中的所有元素来重新分配矢量

我试过了

vector <- vector[format(vector, "%M") == 00,]

这会导致以下缺少参数的错误

Error in lapply(X = x, FUN = "[", ..., drop = drop) : argument is missing, with no default

也试过

vector <- vector["%M""== 00]

这似乎是一个开放命令

由于 POSIX 时间存储为自 1970 年 1 月 1 日以来经过的秒数,我想我可以通过从向量中排除所有不是 3600 的倍数的元素来做到这一点。我宁愿不使用它虽然方法。提前谢谢你,我是 R 的新手。

你可以试试

v2[!v2$min]
#[1] "2015-01-05 15:00:00 EST" "2015-01-05 15:00:30 EST"

或者您的命令在没有 comma

的情况下也应该有效

数据

v1 <- c("2015-01-05 15:00:00", "2015-01-05 15:45:00", "2015-01-05 15:00:30")
v2 <- strptime(v1, '%Y-%m-%d %H:%M:%S')

格式化 returns 字符类型,而不是数字,因此您应该将其与“00”进行比较。也不需要逗号,因为只有 1 个维度。

vector <- vector[format(vector, "%M") == "00"]

使用:

vector2 <- vector2[v2$min==0]

我重新分配向量 2 (v2),排除分钟不为 0 的所有元素。 这是@akrun 提出的。 它在保持数据类型为 POSIX.

的同时进行选择

初始代码的第一个选项有两个问题:

1.function 格式() returns 字符;

2.there 是最后一个“]”之前的“,”,这意味着该函数需要另一个参数,这对向量没有意义,正如@balint 所解释的那样。

最初提交的第二个选项存在一些语法错误。正确的语法是在这个答案上,正如@akron 所建议的那样。