dplyr:一行和特定值之间的最大值和最小值
dplyr: max and min between a row and a specific value
我正在尝试创建导致给定行和特定值之间的最大值的代码,但我不知道该怎么做。我在这里看到了一些建议,但它们只适用于行的几个值
这是我预期结果的一个简单示例。我想要“开始”和 19:00:00 之间的最大值(我正在使用 hms)
Type | Start | max_value_between
<chr>| <hms> | <hms>
A | 19:30:00 | 19:30:00
B | 18:45:00 | 19:00:00
提前致谢
您可以使用 pmax
:
mydata$max_value_between <- pmax(mydata$Start, '19:00:00')
我们也可以用
library(dplyr)
my_data %>%
rowwise %>%
mutate(max_value_between = max(Start, "19:00:00")) %>%
ungroup
library(tidyverse)
library(hms)
data <- tribble(
~Type, ~Start,
"A", "19:30:00",
"B", "18:45:00"
) %>%
mutate(Start = hms::as_hms(Start))
data %>%
mutate(
max_value = if_else(Start > as_hms("19:00:00"), Start, as_hms("19:00:00"))
)
# # A tibble: 2 x 3
# Type Start max_value
# <chr> <time> <time>
# 1 A 19:30 19:30
# 2 B 18:45 19:00
我正在尝试创建导致给定行和特定值之间的最大值的代码,但我不知道该怎么做。我在这里看到了一些建议,但它们只适用于行的几个值
这是我预期结果的一个简单示例。我想要“开始”和 19:00:00 之间的最大值(我正在使用 hms)
Type | Start | max_value_between
<chr>| <hms> | <hms>
A | 19:30:00 | 19:30:00
B | 18:45:00 | 19:00:00
提前致谢
您可以使用 pmax
:
mydata$max_value_between <- pmax(mydata$Start, '19:00:00')
我们也可以用
library(dplyr)
my_data %>%
rowwise %>%
mutate(max_value_between = max(Start, "19:00:00")) %>%
ungroup
library(tidyverse)
library(hms)
data <- tribble(
~Type, ~Start,
"A", "19:30:00",
"B", "18:45:00"
) %>%
mutate(Start = hms::as_hms(Start))
data %>%
mutate(
max_value = if_else(Start > as_hms("19:00:00"), Start, as_hms("19:00:00"))
)
# # A tibble: 2 x 3
# Type Start max_value
# <chr> <time> <time>
# 1 A 19:30 19:30
# 2 B 18:45 19:00