改变日期以创建所有时间小于时间戳的列
mutate date to create a column for all time less than a timestamp
我有一些数据看起来像这样:
# A tibble: 754 x 2
time v1
<dttm> <dbl>
1 2020-04-16 09:45:00 175.
2 2020-04-16 10:00:00 174.
3 2020-04-16 10:15:00 174.
4 2020-04-16 10:30:00 173.
5 2020-04-16 10:45:00 174.
我想 group_by
来自 lubridate
包的变量 day
并应用 ifelse
语句。
df %>%
mutate(
day = day(time)
) %>%
group_by(day) %>%
mutate(
lessThanTenThirty = ifelse(time < "10:30", 1, 0)
)
因此,当数据小于 10:30 时,所有 time
(所有天数)的预期输出为 1
,所有 0
=18=]之后。
数据:
df <- structure(list(time = structure(c(1587030300, 1587031200, 1587032100,
1587033000, 1587033900, 1587116700, 1587117600, 1587118500, 1587119400,
1587120300), tzone = "UTC", class = c("POSIXct", "POSIXt")),
v1 = c(174.52, 174.25, 173.69, 173.07, 174.015, 179.578,
178.41, 178.42, 178.98, 178.6)), row.names = c(NA, -10L), class = c("tbl_df",
"tbl", "data.frame"))
您不必对数据进行分组。只需使用 format
重新格式化您的时间:
df %>%
mutate(lessThanTenThirty = if_else(format(time, '%H:%M') < "10:30", 1, 0))
# A tibble: 754 x 3
time v1 lessThanTenThirty
<dttm> <dbl> <dbl>
1 2020-04-16 09:45:00 175. 1
2 2020-04-16 10:00:00 174. 1
3 2020-04-16 10:15:00 174. 1
4 2020-04-16 10:30:00 173. 0
5 2020-04-16 10:45:00 174. 0
6 2020-04-16 11:00:00 175. 0
7 2020-04-16 11:15:00 175. 0
8 2020-04-16 11:30:00 175. 0
9 2020-04-16 11:45:00 176. 0
10 2020-04-16 12:00:00 176. 0
选项as.ITime
library(data.table)
library(dplyr)
df %>%
mutate(lessThanTenThirty = +(as.ITime(time) < as.ITime("10:30:00")))
我有一些数据看起来像这样:
# A tibble: 754 x 2
time v1
<dttm> <dbl>
1 2020-04-16 09:45:00 175.
2 2020-04-16 10:00:00 174.
3 2020-04-16 10:15:00 174.
4 2020-04-16 10:30:00 173.
5 2020-04-16 10:45:00 174.
我想 group_by
来自 lubridate
包的变量 day
并应用 ifelse
语句。
df %>%
mutate(
day = day(time)
) %>%
group_by(day) %>%
mutate(
lessThanTenThirty = ifelse(time < "10:30", 1, 0)
)
因此,当数据小于 10:30 时,所有 time
(所有天数)的预期输出为 1
,所有 0
=18=]之后。
数据:
df <- structure(list(time = structure(c(1587030300, 1587031200, 1587032100,
1587033000, 1587033900, 1587116700, 1587117600, 1587118500, 1587119400,
1587120300), tzone = "UTC", class = c("POSIXct", "POSIXt")),
v1 = c(174.52, 174.25, 173.69, 173.07, 174.015, 179.578,
178.41, 178.42, 178.98, 178.6)), row.names = c(NA, -10L), class = c("tbl_df",
"tbl", "data.frame"))
您不必对数据进行分组。只需使用 format
重新格式化您的时间:
df %>%
mutate(lessThanTenThirty = if_else(format(time, '%H:%M') < "10:30", 1, 0))
# A tibble: 754 x 3
time v1 lessThanTenThirty
<dttm> <dbl> <dbl>
1 2020-04-16 09:45:00 175. 1
2 2020-04-16 10:00:00 174. 1
3 2020-04-16 10:15:00 174. 1
4 2020-04-16 10:30:00 173. 0
5 2020-04-16 10:45:00 174. 0
6 2020-04-16 11:00:00 175. 0
7 2020-04-16 11:15:00 175. 0
8 2020-04-16 11:30:00 175. 0
9 2020-04-16 11:45:00 176. 0
10 2020-04-16 12:00:00 176. 0
选项as.ITime
library(data.table)
library(dplyr)
df %>%
mutate(lessThanTenThirty = +(as.ITime(time) < as.ITime("10:30:00")))