library(tidyverse)
df <- tibble(`Roman Numeral` = c(rep("I", 3), rep("II", 3)),
Letter = c("A", "B", "C", "D", "E", "F"),
Value = c(10, 5, 22, 3, 25, 7),
Threshold = rep(20, 6))
df
#> # A tibble: 6 x 4
#> `Roman Numeral` Letter Value Threshold
#> <chr> <chr> <dbl> <dbl>
#> 1 I A 10 20
#> 2 I B 5 20
#> 3 I C 22 20
#> 4 II D 3 20
#> 5 II E 25 20
#> 6 II F 7 20
Вот мой df
кадр данных выше. Мне нужно выполнить логику, включающую групповую оценку, одновременно оценивая одну строку. Я не знаю, имеет ли это смысл. Позвольте мне просто изложить то, что я пытаюсь сделать ниже, надеюсь, это понятно.
df.do <- df %>%
group_by(`Roman Numeral`) %>%
mutate(Violation = **see requested logic**)
Вот желаемый результат ниже. Как мне выполнить эту трехшаговую логику в tidyverse
, возможно, с dplyr
?
df.do # (desired output)
#> # A tibble: 6 x 4
#> `Roman Numeral` Letter Value Threshold Violation
#> <chr> <chr> <dbl> <dbl> <logical>
#> 1 I A 10 20 TRUE
#> 2 I B 5 20 TRUE
#> 3 I C 22 20 TRUE
#> 4 II D 3 20 FALSE
#> 5 II E 25 20 FALSE
#> 6 II F 7 20 FALSE
- Оцените каждую
Roman Numeral
группу отдельно
- Для каждой
Roman Numeral
группы; перейти к строке с буквой max()
и определить (только для этой строки), превышает ли Value
Threshold
- Если шаг № 2 (непосредственно выше) равен
TRUE
, заполните все Violation
s для этой конкретной группы как TRUE
, в противном случае заполните FALSE