按时间戳的元素组件选择行

时间:2015-02-22 12:04:58

标签: r select vector timestamp

我有一个由时间戳组成的矢量POSIXlt,格式:" 2015-01-05 15:00:00,我是从时间帧中提取的。

我想通过丢失Minutes != 00

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

我已经尝试了

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

会产生以下错误参数

  

lapply错误(X = x,FUN =&#34; [&#34;,...,drop = drop):     参数缺失,没有默认值

也试过

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

这似乎是一个开放的命令

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

3 个答案:

答案 0 :(得分:1)

你可以尝试

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')

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

使用:

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

我重新分配向量2(v2),不包括分钟不为0的所有元素。 这是由@akrun提出的。 它将数据类型保持为POSIX进行选择。

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

1.function format()返回字符;

2.有一个&#34;,&#34;在最后&#34;]&#34;之前,这意味着该函数期待另一个参数,这对于@balint所解释的向量没有意义。

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