【发布时间】:2018-08-15 09:29:57
【问题描述】:
考虑一个包含 2 列的 tibble A,其中第 1 列包含时间戳(POSIXct 类)和一个 Interval 对象 b,它是我使用 lubridate::int_diff 创建的,包含 9 个单独的时间间隔。
使用 dplyr,我想在 tibble A 中添加 9 个新列,指示每行的时间戳是否在任何间隔内。换句话说,我想使用函数 %within% 并将长度为 9 的向量输出分布到 9 个新列中。
使用 dplyr 包最有效的是什么?
例子:
library(lubridate)
library(dplyr)
A <- tibble(Ts = ymd_hms(c("2018-01-01 15:12:04",
"2018-01-02 00:14:06","2018-01-05 12:00:00")),
P = c(1:3))
ts.start <- ymd_hms("2018-01-01 15:00:00")
ts.end <- ymd_hms("2018-01-02 15:30:00")
ts <- c(ts.start,sort(ts.end -
minutes(cumsum(c(15,15,30,30,60,60,60,60)))),ts.end)
b <- int_diff(ts)
# Applying %within" to the first element works
(A[[1,1]] %within% b) + 0
# The line with error.
mutate(A,New = Ts %within% b )
最后一行按预期产生错误,并且想知道如何根据在变量列上应用具有矢量输出的函数来定义新变量。
【问题讨论】: